私はテストDLLを持っています。 DLLのイベント後、私はdllからexeへコールバック関数を使いたい。dllからexeへの関数呼び出し++
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);
エラー:コンパイルTEST.DLLと
Error 18 error LNK2019: unresolved external symbol __imp_getSum referenced in function callSum test.obj test
いただきました!間違っていますか?たぶん良い方法がありますか? ありがとうございます。
.hファイルが壊れていて、getSum()が '__declspec(dllexport)'と宣言されています。これは、DLLをビルドする場合にのみ当てはまりますが、テストをビルドするときには当てはまりません。それは 'dllimport'です。マクロを使用して2つの中から選択すると定型句になります。 –
myex.exeをリンクした後で、 "myexe.lib"ファイルも取得しているはずです。 これをtest.dllのlinkerコマンドに追加します。 – ssbssa