DLL in einer DLL einbinden
-
Hallo,
Ich bin noch Anfänger in der DLL-Programmierung. Ich habe von meinem Programm eine DLL gemacht und dieses Programm ruft schon eine andere DLL auf.
Beim Testen funktioniert die DLL super gut bis auf dem Punkt, wo ich die andere DLL aufrufe, die rufe ich mit dem Befehl:HINSTANCE hLib = LoadLibrary(LPCWSTR("inpout32.dll"));auf und bekomme immer eine null auf hLib zurück geliefert.
Die Funktion vom in DLL gewandelten Programm ruft ich aber mit:
extern "C" __declspec(dllimport) void Angle_pos(double); auf
Weiss vielleicht jemand woran das liegen kann? Danke!
mary
-
Wenn hLib == NULL, dann konnte die DLL nicht geladen werden.
Ermittel mal den Fehler mittles GetLastError().Nachdem du die die DLL geladen hast musst du den Funktionseinsprungspunkt mittels GetProcAddress holen. Aber das geht nur wenn das Handle gültig ist.
-
mary3021 schrieb:
HINSTANCE hLib = LoadLibrary(LPCWSTR("inpout32.dll"));
auf und bekomme immer eine null auf hLib zurück geliefert.
Dieser cast ist ja auch absoluter Unfug!
Versuch es mal:HINSTANCE hLib = LoadLibrary(_T("inpout32.dll"));
-
HINSTANCE hLib = LoadLibrary(_T("inpout32.dll"));
Danke Martin, aber es geht immer noch nicht!
Ich habe es mit der Funktion GetLastError() versucht mit folgendem Befehl
if (hLib == NULL ) cout << "Fehler:" << GetLastError() << endl;
und bekomme Fehler : 127.
Wisst Ihr vielleicht was das bedeutet?
-
ERROR_PROC_NOT_FOUND
The specified procedure could not be found.
Siehe
http://msdn.microsoft.com/en-us/library/ms681382(VS.85).aspx
-
Dankeeeeeeeeeeeeeeeeeeeeeeeeee
-
Jetzt weiss ich, das mein Testprogramm meine Library inpout32.dll nicht finden kann, aber woran könnte das liegen????
mary
-
Falsches Verzeichnis (SearchPath).
Zum testen einfach erstmal mit absoluten Pfaden probieren.
-
Hört sich eher an, als ob GetProcAddress nicht geklappt hat.
-
Martin Richter schrieb:
Hört sich eher an, als ob GetProcAddress nicht geklappt hat.
und hast du dann vielleicht eine Ahnung, warum GetProcAddress nicht klappen kann?