读书人

VS2008 C++ 怎么指定运行和调试时的dl

发布时间: 2012-01-26 19:40:46 作者: rapoo

VS2008 C++ 如何指定运行和调试时的dll路径?
举例如下:

有以下无误库.
D:\MyCppExLib\bin\A.dll
D:\MyCppExLib\include\A.h
D:\MyCppExLib\lib\A.lib

设置D:\MyCppExLib\include\和D:\MyCppExLib\lib\
至"工具"->"选项"->"项目和解决方案"->"VC++目录"中的 "包含文件" 及 "库文件" 中.

而后我有测试解决方案在
D:\MyProject\test\
工程在如下目录中
D:\MyProject\test\test\

测试工程内需调用A中函数.
已设置好链接器附加依赖项 "A.lib"
生成解决方案,编译无误得到test.exe于
D:\MyProject\test\Debug\

问题是,如何使得以下情况均得到满足?
A.双击D:\MyProject\test\Debug\中的test.exe
以及
B.在VS中执行(F5或Ctrl+F5)都能正确执行而不报错(没有找到A.dll)?

我做了以下试验.
1.将A.dll置于C:\WINDOWS\system32\ //A,B均可
2.将A.dll置于目录D:\MyProject\test\Debug\ //A,B均可(但若生成执行Release就要再复制A.dll至相应目录)
3.将A.dll置于目录D:\MyProject\test\test\ //A不可, B可
4.将A.dll置于目录D:\Program Files\Microsoft Visual Studio 9.0\VC\bin\ //A不可, B可

5.将D:\MyCppExLib\lib\添加至系统环境变量"Path"中. //A可, B不可
6.将D:\MyCppExLib\lib\添加至"工具"->"选项"->"项目和解决方案"->"VC++目录"中的 "可执行文件" 中. //A,B均不可

这么看下来好像只有试验1最满意了, 但是我又不想把dll往C:\WINDOWS\system32里扔而保持MyCppExLib的原样..
我重点想关心的是试验5,6.
如果试验6成功就完全满足我的需求了. (类似的情形在codeblocks中以试验6,完成A,B均可.)
让我奇怪的是试验5在B的情况下居然也不行...

后我在test的工程属性中也进行了各种尝试均以失败告终...

零零散散敲了这么多,如果仔细看到这里辛苦您啦, 希望各位同仁帮忙~ 解惑试验5,6,或给出除试验1的另外方法


[解决办法]
一般是编译的时候生成h,lib,bin等目录,但是可以添加工程的post build属性,把编译后的h,lib,dll文件都copy到一个统一的目录,然后exe调用的时候都到这个目录中link等,这样就可以避免来回设置的问题
[解决办法]
感觉Path方式应该能达到楼主要求啊,再查下是不是路径写错了,或者系统变量和用户变量的Path都添加上。
[解决办法]
系统找dll属性
1、当前exe目录下
2、当前进程目录下
3、系统system目录下
4、windows目录下
5、环境设置的路径下
要想找到,设置工作目录:属性-配置属性-调试-工作目录

设置D:\MyCppExLib\include\和D:\MyCppExLib\lib\
至"工具"->"选项"->"项目和解决方案"->"VC++目录"中的 "包含文件" 及 "库文件" 中.
你的设置能够保证编译和链接通过
[解决办法]

探讨
您好, 我在MSDN上看到的正是您所说的查找顺序.
"包含文件"及"库文件"确实已经设置好了也编译链接通过的.

您上面所说的
"设置工作目录:属性-配置属性-调试-工作目录" 这个我尝试过, 设置其为 D:\MyCppExLib\bin\
再搭上试验5, 将D:\MyCppExLib\lib\添加至系统环境变量"Path"中. 貌似A,B两种情况都可以了.

但是我上面说的B情况却……

读书人网 >VC/MFC

热点推荐