Problem mit eingener DLL und GetProcAddress
-
extern "C" DLL_EXPORT void GetFiletypeInfo(....)
-
Hast du deine Dateien als .c oder als .cpp abgespeichert?
Bei letzterem: Schreib mal extern "C" vor die Funktion in der DLL.
-
Schau dir auch mal das Tool an. Damit kannst du gucken, ob die Funktion richtig exportiert wurde. http://www.dependencywalker.com
-
Und zusätzlich zum EXTERN_C, da hier scheinbar der VC verwendet wird, dem Projekt noch ein Def-File hinzufügen. Wenn das ausbleibt, schlägt das '__stdcall-Mangling' zu, die Funktion wird unter dem Namen _GetFiletypeInfo@12 exportiert. Der Inhalt des Def-Files kann kurz und knapp gehalten werden:
EXPORTS GetFiletypeInfo
-
Er hat die Funktion doch garnicht als __stdcall definiert, also brauch man das auch nicht.
-
Er hat die Funktion doch garnicht als __stdcall definiert, also brauch man das auch nicht.
Da ist was dran. <rausred> Jaja, die Gewohnheit ... </rausred>
Obwohl:
[cpp]typedef void (CALLBACK* LPDTIFUNC)(char*,char*,char*);[/cpp]
[ Dieser Beitrag wurde am 22.03.2003 um 18:51 Uhr von -King- editiert. ]
-
Aber da hab ich gleich mal eine Frage: Muss man __stdcall benutzen, wenn man die DLL in anderen Sprachen benutzen will?
-
tja, beim Zeiger schon, bei der Funktion dann aber nicht. Da wäre ihm das Programm dann wohl abgestürzt.
-
Muss man __stdcall benutzen, wenn man die DLL in anderen Sprachen benutzen will?
Ja. VB beispielsweise kann nichts anderes, AFAIK.
-
Vielen dank für die superschnellen und massigen Antworten. Das mit dem extern "C" hat gleicht funktioniert. Das Problem das die DLL's in anderen sprachen verwendet werden sollten besteht bei mir ja nicht da die DLL's nur als Plugin für meinen Explorer dienen. Da braucht kein anderes programm drauf zuzugreifen