リターンコードを確認して電話をかけると、GetLastError()
あなたは解放されます。ここでリターン コードを 2 回チェックする必要があります。実際にはリターンコードをゼロ回チェックしています。
hDLL = LoadLibrary(L"MYDLL.DLL");
確認してくださいhDLL
。ヌルですか?その場合は、電話GetLastError()
して理由を確認してください。「ファイルが見つかりません」と同じくらい簡単かもしれません。
lpGetNumber = (LPGETNUMBER)GetProcAddress((HMODULE)hDLL, "GetNumber");
lpGetNumber
が NULL の場合は、 を呼び出しますGetLastError()
。proc アドレスが見つからなかった理由が表示されます。考えられるシナリオがいくつかあります。
- という名前のエクスポートされた関数はありません
GetNumber
- という名前のエクスポートされた関数がありますが、
GetNumber
マークされていないextern "c"
ため、名前マングリングが発生します。
hDLL
は有効なライブラリ ハンドルではありません。
上記の #1 であることが判明した場合は、次の__declspec(dllexport)
ように宣言を装飾して関数をエクスポートする必要があります。
MyFile.h
__declspec(dllexport) int GetNumber();
上記の #2 であることが判明した場合は、これを行う必要があります。
extern "C"
{
__declspec(dllexport) int GetNumber();
};