我应该在哪里包含库中 bin 文件夹中的 .dll 文件?
Posted
技术标签:
【中文标题】我应该在哪里包含库中 bin 文件夹中的 .dll 文件?【英文标题】:Where should I include .dll files from bin folder in libraries? 【发布时间】:2020-04-15 03:36:22 【问题描述】:要使用 C++ 库,我们需要从 bin 文件夹中复制 .dll
文件,我们被指示将它们粘贴到 project directory
或 C:/windows32/
中。
除了可访问性范围之外,我们将.dll
文件粘贴到何处是否重要?
【问题讨论】:
不要乱用%SYSTEMROOT%
中的文件,尤其是不要覆盖现有的系统文件,如果你有其他选择的话。
@Davislor 是的,但为什么呢?我想知道您的建议背后发生了什么,并将其写为答案
【参考方案1】:
如果您有其他选择,将文件写入系统目录是一个非常糟糕的主意。 (如果你确实需要,你会检查环境变量而不是硬编码。)
充其量,没有其他程序会安装同名的库,因此您的系统目录中会有一些额外的垃圾。卸载程序时无法将其删除,因为它从未注册过,而且您无法知道其他应用程序是否需要它。
在最坏的情况下,两个不同的程序会安装不同版本的FOO.DLL
,其中一个会崩溃。这被亲切地称为“DLL Hell”,解决方案是每个人都将他们的 DLL 放在项目目录中。 (或者有时,供应商的公用文件。)
【讨论】:
如果 DLL 是标准的(例如官方 driectX dll),那么可以将它们放在系统根目录中还是期望它们?然后设计我们的应用程序,如果它需要相同 DLL 的修改版本或具有相似名称的 DLL,则应用程序首先查找它自己的资源目录。 在这种情况下,您可以在安装过程中运行可再发行 DirectX 安装程序。它被编程为检测是否已经安装了较新的版本。 绝对不要用可能较旧的文件覆盖系统目录中已经存在的文件。以上是关于我应该在哪里包含库中 bin 文件夹中的 .dll 文件?的主要内容,如果未能解决你的问题,请参考以下文章