1

当我将 DLL 复制到 .exe 所在的同一文件夹中时,它可以工作。不过,有一个(某种)解决方法:当我打开调试器选项并将 DLL 的原始路径添加到环境块时,当我在我的 IDE 中启动我的项目时它可以工作,但它不起作用我在资源管理器中启动 project.exe 文件。这不是一个真正的问题,我只是想知道这些文件之间的关系。

4

1 回答 1

6

当 DLL 仅通过其名称链接时,将使用 DLL 搜索路径来定位它。这个搜索路径是一个复杂的野兽,会根据各种设置而变化。它在 MSDN 上有详细记录。

在 DLL 搜索路径的所有变体中,加载可执行文件的目录是搜索的第一个目录。这是迄今为止加载 DLL 最安全的方法。要求修改全局PATH环境变量是侵入性的。要求将 DLL 安装在系统目录中是侵入性的,并且违反了最佳实践的所有建议。要求使用当前目录是脆弱易碎的,并且会打开安全漏洞。

在理想的世界中,应用程序应该是隔离的。实现这一点的最有效方法是将依赖项与可执行文件放在同一目录中。

于 2012-10-21T19:39:53.980 回答