我试图通过抓取其函数指针来从 DLL 调用导出的函数,GetProcAddress
但在调用该函数时应用程序崩溃。
我使用dependencywalker 来查看导出的函数是否具有正确的名称。返回的地址GetProcAddress
不为空。我几乎可以肯定它与调用约定有关,我都使用了__cdecl
但__stdcall
没有成功。但是我确实想使用GetProcAdress
而不是__declspec(dllimport)
.
DLL #1(调用者)
将 DLL#2.lib 链接到此 DLL
typedef void(__stdcall *ptr_init)(DWORD size); ctx.hModule = LoadLibraryA("someDLL.dll"); ptr_init init = (ptr_init)GetProcAddress(ctx.hModule, "init"); if (init == NULL) { out = out + " | init function is null"; } else { out = out + " | init function found!";//It is found } DWORD test = 10; (*init)(test);//<-- makes application crash
DLL #2(包含导出函数的 DLL)
//header.h
extern "C" __declspec(dllexport) void init(DWORD size);
//source.cpp
extern "C" __declspec(dllexport) void init(DWORD size) {
//code
}