dll - kann keine funktion laden
-
folgendes:
Ich hab mir 'ne dll gemacht. in der gibts vorerst nur mal 2 leere funktionen:#include "types.h" #define EXPORT __declspec(dllexport) EXPORT tPerson* AddPerson() { return NULL; }in der types.h steht:
typedef struct _tPerson { int index; } tPerson; typedef tPerson*(*ptrNewPerson)(void);und da, wo ich die dll verwenden möcht, schreib ich das rein:
#include "Types.h" int meineFunktion() { HMODULE AI = LoadLibrary("MyDll.dll"); //DLL laden ptrPersonIn ptr = NULL; //pointer auf die funktion ptr = (ptrPersonIn)GetProcAddress(AI, "AddPerson"); //funktionsadresse laden (*ptr) (); //aufruf FreeLibrary(AI); //DLL freigeben return 0; }nur, das problem ist, dass die funktion "GetProcAddress" nicht so richtig klappt, jedenfalls bleibt in der variable ptr immer NULL stehen
Weiß jemand, warum?
-
Ein ähnliches Problem hatte ich vorhin

Schreib in der types.h mal so:
#ifdef __cplusplus extern "C" { #endif // hier die Deklarationen und Funktionen #ifdef __cplusplus } #endifGetProcAddress findet die Funktion in der DLL nicht, da dort die Funktion nicht genau so heißt, sondern da werden Zeichen wie @s drangehängt

-
oder du fügst eine "dateiname.def" datei zu deinem dll vc projekt hinzu und schreibst folgendes rein
EXPORTS AddPersondann klappts mit dem namen
den declspec kram kannste dir dann auch sparn
-
So ganz klappt das bei mir noch nicht. Ich hab das jetzt zwar in die types.h reingetan, aber es passiert immernoch das selbe.
Ich habs auch noch in der Quellcode-datei der DLL reingetan, da klappts aber auch nicht.
Muss ich das in alle Dateien schreiben?
-
hast du meine variante ausprobiert?
-
Nach etwas probieren hab ichs mit deiner Variante geschafft! Thx!!!