我的第一个问题是: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/