gpt4 book ai didi

c++ - 依赖于其他 DLL 的 DLL?

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:24 31 4
gpt4 key购买 nike

静态链接不是一个选项。

假设我有一个依赖于 DLL 的可执行文件。一种解决方案是将 DLL 与可执行文件放在同一文件夹中。现在假设我需要将 DLL 注入(inject)到依赖 DLL 的进程中。因为注入(inject)了DLL,我把它依赖的DLL放在哪里呢?在同一个文件夹?还是在被注入(inject)进程的目录中?

最佳答案

依赖于一个或多个其他 DLL 的 DLL 并不是什么特别的东西。即使是一个普通的 DLL 也会依赖于驻留在其他 DLL 中的 Windows 共享组件。这些“共享组件”的一个很好的例子是 Kernel32.dll 和 CRT DLL,例如 MSVCR80.DLL 等。

您可以通过调用 Dependency Walker 来准确找出您的 DLL 或 EXE 需要哪些其他 DLL。 .为此,只需从 Visual Studio 命令提示符运行 depends.exe 并将感兴趣的 DLL 拖放到出现的窗口中。如果您没有可用的 dependency walker,您可以从上面的链接下载它。

我不确定 DLL 注入(inject)的东西,但如果您将所有(其他 DLL)依赖项放在与您的 DLL 相同的文件夹中,这通常就足够了,这将是 EXE 加载这些 DLL 的文件夹居住。

例如:如果 C:\test\foo.exe 需要 bar.dll(这又需要 baz.dll,假设 baz.dll 不是标准的 windows 共享组件),那么您可以将 bar.dllbaz.dll 都放在 C:\测试

关于操作系统如何确定要加载哪个 DLL 的内容还有很多,因为同一个 DLL 的多个版本可能存在于不同的位置,MSDN 有一个有用的 article关于动态链接库的搜索顺序。

关于c++ - 依赖于其他 DLL 的 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182215/

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