0

我有一个函数库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
4

0 回答 0