GetProcAddress findet funktionen nicht
-
Hallo community,
ich hoffe ihr könnt mir bei meinem Problem helfen.
Ich habe mit eben eine dll erstellt und versuche nun die Funtkionen in einem anderen Projekt zu verwenden.Hier der teil aus der dll
extern "C" { __declspec(dllexport) XLstatus /*__stdcall*/ Init(XLaccess *pxlChannelMaskTx, unsigned char *pxlChannelIndex);}Wenn ich mir die .dll dann mit dem Dependency Walker anschau wird die dll auch richtig erstellt und die Funktionsnamen sind dank extern C auch nicht verändert.
So nun will ich die Funktionen in meinem Hauptprogramm nutzen dazu mach ich folgendes:
typedef XLstatus (*BinaryFunction_t) (XLaccess, unsigned char); int _tmain(int argc, _TCHAR* argv[]) { HINSTANCE hinstLib; hinstLib = LoadLibrary(L"test.dll"); BinaryFunction_t Init; createfkt CreateRxThread; BOOL fFreeResult; if (hinstLib == NULL) { cout << "load Failed"<< endl; } XLaccess xlChanMaskTx = 0; unsigned char xlChanIndex = 0; XLstatus xlStatus = XL_ERROR; Init = (BinaryFunction_t) GetProcAddress (hinstLib, "Init") ; // call funktion from Dll if ( Init != NULL ) xlStatus = Init(xlChanMaskTx, xlChanIndex);Hier leifert mir getProcaddress immer null!
Das laden der dll funktioniert noch!
Nur warum findet er die Funktion nicht ?? der Name stimmt, wie ich ja dank Dependency Walker.Danke für eure Hilfe
-
1. Falsches Forum, korrekt wäre WinAPI
2. Kann es sein, dass Du die DLL von der falschen Stelle lädtst? Z.B. eine ältere Version? Nicht neu kompiliert, etc.Edit:
Ausserdem stimmt der typedef für den Funktionspointer nicht mit der Signatur der Funktion überein:typedef XLstatus (*BinaryFunction_t) (XLaccess, unsigned char);Sollte wohl eher so sein:
typedef XLstatus (*BinaryFunction_t) (XLaccess*, unsigned char*);
-
ach verdammt. Ja jetzt gehts.
Da hatte ich wohl mal was rumkopiert.danke für die Hilfe