繁体   English   中英

为什么 Visual Studio 找不到我的 DLL? [复制]

[英]Why can't Visual Studio find my DLL? [duplicate]

在 Visual Studio 2010 中,在VC++ Directories > Executable Directories下,我指定了glew32d.dll的路径。 但是,当我运行可执行文件时,它仍然会抱怨。

另一方面,如果我将 DLL 复制到本地文件夹并运行可执行文件,它不会抱怨。

有人可以告诉我如何解决这个问题吗? 另外,为什么 Visual Studio 无法识别该路径?

更新场景:我目前使用一个模板项目,我用它作为我很多项目的起始代码。 此模板依赖 glew32d.dll。 我通常将所有依赖的 dll 存储在一个公共的 bin 文件夹中。 我希望引用这个文件夹,Visual Studio 可以从那里读取 dll,而不必每次都复制 dll。 什么是处理这个问题的好方法?

在您的项目设置中指定 DLL 文件的路径并不能确保您的应用程序将在运行时找到 DLL。 您只告诉 Visual Studio 如何找到它需要的文件。 这与程序如何在构建后找到它需要的东西无关。

将 DLL 文件与可执行文件放在同一文件夹中是迄今为止最简单的解决方案。 这是依赖项的默认搜索路径,因此如果您选择该路径,则无需执行任何特殊操作。
为了避免每次都手动执行此操作,您可以为您的项目创建一个构建后事件,它会在构建完成后自动将 DLL 复制到适当的目录中。

或者,您可以将 DLL 部署到 Windows并行缓存,并将清单添加到指定位置的应用程序。

我在同一个库中遇到了同样的问题,在 SO 上找到了解决方案:

在 MSDN 中搜索“如何:为项目设置环境变量”。 (对于那些匆忙的人来说,它是项目>属性>配置属性>调试“环境”和“合并环境”属性。)

语法为 NAME=VALUE,可以使用宏(例如,$(OutDir))。

例如,要将 C:\\Windows\\Temp 添加到 PATH:

 PATH=C:\\WINDOWS\\Temp;%PATH%

类似地,要将 $(TargetDir)\\DLLS 附加到 PATH:

 PATH=%PATH%;$(TargetDir)\\DLLS

(此处由多重共线性回答: 如何在 Visual Studio 中设置路径?

尝试“配置属性 -> 调试 -> 环境”并在运行时设置 PATH 变量

添加到奥列格的答案:

通过将 Visual Studio 的$(ExecutablePath)附加到 Configuration Properties->Debugging 中的 PATH 环境变量,我能够在运行时找到 DLL。 这个宏正是在 Configuration Properties->VC++ Directories->Executable Directories 字段中定义的内容*,所以如果你有这个设置来指向你需要的任何 DLL,只需将它添加到你的 PATH 中就可以轻松地在运行时找到 DLL!

* 我实际上不知道$(ExecutablePath)宏是使用项目的可执行目录设置还是全局属性页的可执行目录设置。 由于我通过属性页配置了我经常使用的所有库,因此这些目录显示为我创建的任何新项目的默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM