在Visual Studio 2010中,在VC++ Directories > Executable Directories
下,我已指定glew32d.dll
的路径。但是,当我运行可执行文件时,它仍然会抱怨。
另一方面,如果我将DLL复制到本地文件夹并运行可执行文件,那么它就不会抱怨。
有人可以告诉我如何解决这个问题吗?另外,为什么Visual Studio无法识别该路径?
更新 场景:我目前使用的模板项目用作许多项目的入门代码。此模板取决于glew32d.dll。我通常将所有相关的dll存储在一个公共bin文件夹中。我希望引用这个文件夹,Visual Studio可以从那里读取dll,而不是每次都要复制dll。处理这个问题的好方法是什么?
答案 0 :(得分:56)
在项目设置中指定DLL文件的路径并不能确保您的应用程序符合要求 在运行时找到DLL。您只告诉Visual Studio如何查找所需的文件。那什么都没有 一旦构建,程序如何找到它所需要的东西。
将DLL文件放在与可执行文件相同的文件夹中是迄今为止最简单的解决方案。这是依赖关系的default search path,所以如果你走这条路,你就不需要做任何特别的事 为避免每次都必须手动执行此操作,您可以为项目创建后期构建事件 在构建完成后,它会自动将DLL复制到适当的目录中。
或者,您可以将DLL部署到Windows side-by-side cache,并向应用程序添加指定位置的清单。
答案 1 :(得分:38)
我遇到过同样的问题,在这里找到了解决方案 SO:
在MSDN中搜索“如何:为项目设置环境变量”。 (这是项目>属性>配置属性>调试 “环境”和“合并环境”属性适用于所有人 匆忙。)
语法为NAME = VALUE,可以使用宏(例如, $(OUTDIR))。
例如,要将C:\ Windows \ Temp添加到PATH:
PATH=C:\WINDOWS\Temp;%PATH%
同样,要将$(TargetDir)\ DLLS附加到PATH:
PATH=%PATH%;$(TargetDir)\DLLS
答案 2 :(得分:7)
尝试“配置属性 - >调试 - >环境”并在运行时设置PATH变量
答案 3 :(得分:5)
要添加到Oleg的答案:
我能够在运行时通过将Visual Studio的$(ExecutablePath)
附加到Configuration Properties-> Debugging中的PATH环境变量来找到DLL。这个宏正是在Configuration Properties-> VC ++ Directories-> Executable Directories字段*中定义的,所以如果你有这个设置指向你需要的任何DLL,只需将它添加到你的PATH就可以在运行时轻松找到DLL !
*我实际上不知道$(ExecutablePath)
宏是否使用项目的可执行目录设置或全局属性页的可执行目录设置。由于我拥有通常使用属性页配置的所有库,因此这些目录显示为我创建的任何新项目的默认值。