加载DLL库时访问冲突

时间:2013-06-08 11:10:31

标签: c++ dll load access-violation

我有一个函数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 dumpbin:

    ordinal hint RVA      name

          1    0 00011AA0 Message

0 个答案:

没有答案