我有一個測試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