MessageBox 是否属实,因为它在DllMain()中的 User32.dll 中实现,DllMain()例程显然可能未被调用? 如果是,为什么?你能解释一下吗?
DllMain()对许多有用的东西都有一些限制。
答案 0 :(得分:0)
您无法调用任何可以调用freelibray的loadlibrary的函数,或者您可以根据documentation创建依赖循环。它也没有意义。 Dll main应该只用于做一些非常有限的初始化,它是你的库的入口点而不是逻辑应该被执行的地方
在初始进程启动期间或调用LoadLibrary之后, 系统扫描进程的加载DLL列表。对于每个DLL 尚未使用DLL_PROCESS_ATTACH值调用, 系统调用DLL的入口点函数。这个电话是在 导致进程地址空间的线程的上下文 更改,例如进程的主线程或线程 叫LoadLibrary。对入口点的访问由序列化 系统在整个过程中。 DllMain中的线程持有加载器 锁定所以不能动态加载或初始化其他DLL。