C ++ DLL没有调用MessageBox; "未定义成员MessageBox"

时间:2016-04-20 09:42:28

标签: c++ dll messagebox

我的第一个问题:D 我试图在C ++中创建一个DLL,它会创建一个MessageBox,但是我得到了这个奇怪的错误:"成员MessageBox没有定义"。我在谷歌搜索但没有帮助我......:/

这是我的代码:

#include<windows.h>

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    MessageBox(0, "DLL Loaded", "SUCCESS STATUS", MB_OK); //here is the error :(
    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH:
        // attach to process
        // return FALSE to fail DLL load
        break;
    case DLL_PROCESS_DETACH:
        // detach from process
        break;

    case DLL_THREAD_ATTACH:
        // attach to thread
        break;

    case DLL_THREAD_DETACH:
        // detach from thread
        break;
    }
    return TRUE; // succesful
}

有什么想法吗?我之前从未遇到类似的问题:(

1 个答案:

答案 0 :(得分:2)

您可以在此处查看您的问题:DllMain() routine and MessageBox() function
rerun这是他/她的回答;

您不能调用任何可以调用FreeLibrary的LoadLibrary的函数,或者您可以根据文档创建依赖循环。它也没有意义。 Dll main应该只用于做一些非常有限的初始化,它是你的库的入口点而不是逻辑应该被执行的地方

  

在初始进程启动期间或调用LoadLibrary之后,   系统扫描进程的加载DLL列表。对于每个DLL   尚未使用DLL_PROCESS_ATTACH值调用,   系统调用DLL的入口点函数。这个电话是在   导致进程地址空间的线程的上下文   更改,例如进程的主线程或线程   叫LoadLibrary。对入口点的访问由序列化   系统在整个过程中。 DllMain中的线程持有加载器   锁定,因此无法动态加载或初始化其他DLL。   

你可以看到这个问题,以了解为什么你不应该这样做; Loading a dll from a dll?