我的第一个问题: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
}
有什么想法吗?我之前从未遇到类似的问题:(
答案 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?