MSDN says:
它不能调用loadlibrary或loadlibraryex函数
(或调用这些函数的函数),
因为这可能会在dll加载顺序中创建依赖项循环。
这可能导致在系统执行初始化代码之前使用DLL。
我试着从dllmain打电话给LoadLibrary
,但什么也没发生。
我看到的唯一问题是,加载的dll将在dllmain的其余部分执行之前使用dll中的函数。
为什么我不能给德尔曼的loadlibrary打电话?
编辑:
好吧,我意识到我不能仅仅因为我必须像其他信徒一样相信msdn就给dllmain的loadlibrary打电话(我在那里看到了一些错误的东西,但我也应该忘记它们)。
因为在新版本的Windows中可能会发生一些事情(尽管过去十年没有变化)。
但是任何人都可以显示一个代码,它会复制一些坏的东西,当DllMain调用“cc>”时会发生什么?在任何现有的windows操作系统中?
不仅仅是一个单独的初始化函数在另一个内部的调用,而是dllmain中的LoadLibrary
?
最佳答案
你赞成这样做的理由似乎是:
微软说不要这样做,但是我
单一的测试用例似乎是可行的,因此我不明白为什么没有人应该这样做。
你在一个大的假设下操作:你假设windows加载程序的底层实现永远不会改变。如果加载程序在“windows 8”中被更改,以致您的代码不再正常工作怎么办?现在微软为此受到指责,他们必须包括另一个兼容性黑客来解决他们告诉你不要写的代码。
遵循指导方针。他们不是为了让你的生活更困难,他们是为了保证你的代码在未来的窗口上能像现在一样正常工作。
关于windows - 从DllMain调用LoadLibrary,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4370812/