Selbstgeschriebene DLL einbinden funzt nicht :(
-
Du solltest die Definition Deines Funktionspointers prüfen.
Der muss wohl so lauten:
typedef void (CALLBACK* LPFNDLLFUNC1)(void);Gruß André
-
Wie bekomm ich denn die lib.lib?
Danke
-
wird afaik beim Erstellen der Dll miterstellt
-
Die findest Du im Debug oder Release Verzeichnis Deines Projektes.
Im Zweifelsfall findet Du sie mit der Suchenfunktion des Win-Explorers.
Gruß André
-
; dlltool --base-file C:\DOKUME1\Root\LOKALE1\Temp/cca02660.base --output-exp lib.exp --dllname lib.dll --output-def liblib.def --no-export-all-symbols --add-stdcall-alias --exclude-symbol=DllMainCRTStartup@12 --def C:\DOKUME1\Root\LOKALE1\Temp/cca02660.def --output-lib liblib.a
EXPORTS
Funktion@0 @ 1
Funktion = Funktion@0 @ 2DES?
Des heißt aber liblib.def
Mr.DLL
-
So sorry wegen Doppelpost aber wenns liblib.def ist wie kann ich des mit einbinden?
Schon mal Danke vorallem an av_privat
Mr.DLL
-
hmm, die DEF-Datei ist aber nicht das richtige.
Eher das Ende: --output-lib liblib.a
Das scheint erfolgsversprechender zu sein. Allerdings muss das schon .lib am Ende haben. Ich habe leider keine Ahnung, wie das in der Entwicklungsumgebung funktioniert (zumindest scheint es kein Visual Studio zu sein). Da solltest Du mal das Handbuch oder die Hilfe konsultieren.Andere Frage: Hat denn nun das GetProcadress funktioniert? Dann musst Du nicht mehr die Lib linken (eins von beidem reicht).
Gruß André
-
aaalso:
hier ein bisschen beispiel-code (stammt nicht von mir wie man sieht, läuft aber bei mir):hinstLib = LoadLibrary(TEXT("Projekt1.dll")); // If the handle is valid, try to get the function address. if (hinstLib != NULL) { ProcAdd = (MYPROC) GetProcAddress(hinstLib, TEXT("myputs")); // If the function address is valid, call the function. if (NULL != ProcAdd) { fRunTimeLinkSuccess = TRUE; (ProcAdd) (); } // Free the DLL module. } // If unable to call the DLL function, use an alternative. if (! fRunTimeLinkSuccess) MessageBox(hwnd, "ALtenatr method", "sss", 0); fFreeResult = FreeLibrary(hinstLib);EDIT: Hier kommt noch der "header":
typedef int (*MYPROC)(); HINSTANCE hinstLib; MYPROC ProcAdd; BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;greeetz
chris90
-
Das Beispiel funktioniert mit Sicherheit für dieses Prblem.
Allerdings möchte ich auf die Stolperfalle hinweisen. Auch hier stimmt die Definition des Funktionspointers nicht ganz. So wie ich den Code von Mr.DLL lese, hat seine CallBack den Rückkehrwert void. deshalb sollte die Definition so aussehen:typedef void (*MYPROC)(void);Gruß André
-
So,
das mit der DLL funzt jetzt
Danke nochmalMr. DLL