dll problem
-
hola leute
hab in VC eine dll erstellt und wollte sie in ein bcb-projekt zur laufzeit einbinden.
bei GetProcAddress bekommt ich aber nen fehlercode 5 zurueck (ERROR_ACCESS_DENIED
).hier mal der code
die dll:
#include <windows.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { hModule; ul_reason_for_call; lpReserved; return TRUE; } __declspec(dllexport) int Version(void) { return 1234; }bcb dynamische einbindung
// header: .... irgendwo ... typedef int (*VersionFunc)(void); VersionFunc dll_func; // cpp: hmod = LoadLibrary("my_dll.dll"); // ist ok Memo1->Lines->Add((int)hmod); dll_func = (VersionFunc)GetProcAddress(hmod, "Version"); // error 5weiß jemand was ich da falsch mache ?
Meep Meep
-
Du musst eine DEF-Datei verwenden um die FUnktion zu exportieren...
Oder Du schaust nach wie die Funktion in der DLL wirklich heisst und verwendest den korrekten Namen! (=> dependencywalker.com)
-
re
wofuer brauch ich den dependencywalker ?
die dll hab ich selber geschrieben. da ist nur eine exportierte funktion drinnen
und die heisse einfach 'Version'. oder was meinst du genau?Meep Meep
-
Meep Meep schrieb:
wofuer brauch ich den dependencywalker ?
Den brauchst Du zum Verifizieren.
Meep Meep schrieb:
die dll hab ich selber geschrieben. da ist nur eine exportierte funktion drinnen
Das sieht fast so aus, ja.
Meep Meep schrieb:
und die heisse einfach 'Version'. oder was meinst du genau?
Die heisst mit Sicherheit nicht Version, sondern z.B. ?Version@@YAHXZ. Würdest Du Dich nicht weigern, den DependencyWalker zu benutzen, hättest Du das auch gesehen. Du kannst natürlich auch das besgate DEF-File verwenden, um ein Alias zu exportieren. Dann past es wieder mit "Version".
Im Übrigen würde ich noch __stdcall nehmen.
-
Meep Meep schrieb:
und die heisse einfach 'Version'. oder was meinst du genau?
Nein, die heisst nicht so.