Funktion aus Dll laden und starten
-
Hallo Leute,
ich habe folgendes Problem und zwar möchte ich eine Funktion in einer Dll aufrufen. Dazu benutze ich diesen Code:
typedef int (WINAPI *MYPROC)(int, char[128], int); HMODULE i = LoadLibraryA("API.dll"); FARPROG b; int num, x; char number[128]; b = GetProcAddress(i, "GetDeviceSN"); MYPROC addr_GetDeviceSN = (MYPROC) b; num = addr_GetDeviceSN(x, number, 128);Wenn ich dann beim ausführen an der Funktion ankomme meckert VS rum mit folgender Fehlermeldung: "Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention."
Ich versteh ja das er ein Problem hat weil ich mir den FARPROC in MYPROC caste und dann die Funktion aufrufe, aber ich weiß nicht wie ich es anders lösen könnte.
-
Ich würde mir das WINAPI mal genauer ansehen...
-
Also ist es allgemein falsch?
Ich bin verwirrt weil ich solche Beispiele schon im Netz gefunden habe und die da anscheinend funktionieren.
-
WINAPI ist die Aufrufkonvention __stdcall.
Möglicherweise verwendet die Funktion eine andere Konvention, wie z.B. __cdecl.
-
marbs schrieb:
Also ist es allgemein falsch?
Ich bin verwirrt weil ich solche Beispiele schon im Netz gefunden habe und die da anscheinend funktionieren.die Fehlermeldung ist doch aber mal recht eindeutig über das was da nicht klappt. Die Funktion in der DLL ist dann offentsichtlich nicht _stdcall. Darum mal in der API nachsehen, wie denn MYPROC nun tatsächlich in der DLL deklariert ist.
-
Ah natürlich, vielen Danke
