gpt4 book ai didi

windows - 从 DllMain 调用 LoadLibrary

转载 作者:可可西里 更新时间:2023-11-01 09:39:24 24 4
gpt4 key购买 nike

MSDN says:

It must not call the LoadLibrary or LoadLibraryEx function (or a function that calls these functions), because this may create dependency loops in the DLL load order. This can result in a DLL being used before the system has executed its initialization code.

我试图从 DllMain 调用 LoadLibrary 但没有任何反应。

我看到的唯一问题是加载的 DLL 将在我的 DllMain 的其余部分执行之前使用我的 DLL 中的函数。

为什么我不能在 DllMain 中调用 LoadLibrary?

编辑:

好吧,我意识到我不能在 DllMain 中调用 LoadLibrary 只是因为我必须像其他信徒那样相信 MSDN(我在那里看到了一些错误的东西,但我也应该忘记它们)。
并且因为较新版本的 Windows 可能会发生某些事情(尽管过去十年没有任何变化)。

但是任何人都可以展示一段代码,它会重现在 DllMain 中调用 LoadLibrary 时发生的错误吗?在任何现有的 Windows 操作系统中?
不仅仅是在另一个内部调用一个单例初始化函数,而是在 DllMain 中调用 LoadLibrary

最佳答案

您支持继续进行此操作的论点似乎是:

Microsoft says don't do this, but my single test case seems to work, therefore I fail to see why nobody should be doing this.

您在一个很大的假设下操作:您假设 Windows 加载程序的底层实现永远不会改变。如果加载程序在“Windows 8”中发生更改,导致您的代码不再正常工作怎么办?现在 Microsoft 被指责为它,他们必须包括另一个兼容性 hack 来解决他们告诉 you 不要 在第一个中编写的代码地方。

遵循指南。它们的存在不仅仅是为了让您的生活变得更加困难,它们的存在是为了保证您的代码在未来的 Windows 上也能像现在一样正常工作。

关于windows - 从 DllMain 调用 LoadLibrary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com