int Message()
プログラムから呼び出す必要がある関数を含むライブラリがあります。
私のプログラム (c++ msvc2010):
typedef int (_cdecl*pproc)();
pproc out;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
HINSTANCE hLib = LoadLibrary(L"messager.dll");
if(hLib == NULL) return 0;
out = (pproc)GetProcAddress(hLib,"Message");
printf("out %i", (out == NULL)); //0
if (out == NULL) {
printf("Error getting Address");
}
else {
int j = out(); // Error Access violation
}
FreeLibrary(hLib);
return 0;
}
エラー: 0xC0000005: アクセス違反読み取り場所 "0x0045a780
dll からの関数 (c mingw):
__declspec(dllexport) int Message() {
MessageBox(NULL, TEXT("1"), TEXT("1"), MB_OK);
return main(0, NULL);
}
dll ダンプビン:
ordinal hint RVA name
1 0 00011AA0 Message