c++ - C++ DLL不调用MessageBox; “未定义成员消息框”

标签 c++ dll messagebox

我的第一个问题是:D
我试图用C ++制作一个DLL,这将生成一个MessageBox,但出现这个奇怪的错误:“未定义成员MessageBox”。我在Google上搜索,但没有任何帮助...:/

这是我的代码:

#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
}


有任何想法吗?我以前从未遇到过类似的问题:(

最佳答案

您可以在这里看到问题的答案: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?

关于c++ - C++ DLL不调用MessageBox; “未定义成员消息框”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36739820/

相关文章:

c++ - QT造物主: How to generate the library and testing executable for a custom widget

c++ - MFC 自定义按钮控件

c# - 尝试使用 swig 将 C++ 库与 C# 链接 - 不会让我将对 resulging dll 的引用添加到 C# 项目

java - 如何在 Java 中将消息框中的特定单词(变量)设为粗体?

c++ - 在 C++17 中,是否可以使用带有初始值设定项的 if 语句来解包可选?

C++/具有多个独立窗口的应用程序

c++ - 我应该优化还是让编译器这样做?

c# - MessageBox展开按钮以获取进一步的错误描述

c# - 在 MessageBox 中显示多维数组的值

c++ - 游戏 "Life"中发布版本和调试版本之间的加速比奇怪