我有一个测试dll。在DLL中的事件后,我想使用从DLL的exe回调函数。从dll调用函数到exe C++
Test.dll的 .H
extern "C" __declspec(dllimport) int __stdcall getSum(int , int);
extern "C" __declspec(dllexport) int __stdcall callSum(int , int);
的.cpp
int callSum(int a, int b)
{
return getSum(a, b);
}
myexe 的.cpp
extern "C" __declspec(dllexport)
int __stdcall getSum(int a, int b)
{
return a + b;
}
typedef int(__stdcall * callSumFn)(int a, int b);
和负载
hLib=LoadLibrary(L"test.dll");
if(hLib==NULL)
{
...
return -1;
}
callSumFn callSum = (callSumFn)GetProcAddress(hLib, L"[email protected]");
if (!callSum)
{
//cerr << "Failed to get function address" << endl;
FreeLibrary(hLib);
return 1;
}
callSum(3, 4);
错误:
Error 18 error LNK2019: unresolved external symbol __imp_getSum referenced in function callSum test.obj test
与编译Test.dll的
什么错?也许有更好的方法? 谢谢。
.h文件损坏,它将getSum()声明为'__declspec(dllexport)'。只有在构建DLL时才会出现这种情况,在构建测试时不能这样。然后它是'dllimport'。使用宏在两者之间进行选择是样板。 –
链接myexe.exe之后,您应该已经获得了一个“myexe.lib”文件。 添加此链接到test.dll的命令。 – ssbssa