我用VS2015编译的一个C++工程用到了一个第三方的动态链接库,但是这个库我下载了两个版本。
我用VS进行调试的时候它调用的是我当前环境变量PATH下的库1,但是我直接在工程的bin->debug目录下打开exe文件,这时候这个exe调用的是我之前设置的环境变量PATH下的库2.
所以我的exe在链接DLL的时候,不是从当前的系统环境变量的PATH里面查找的,而是从某个副本环境变量PATH查找相应的DLL文件么?我尝试过把调用DLL的工程清理重新生成,然后直接运行exe文件,这时候链接的DLL还是上一个PATH路径下的,不是当前的PATH路径下的库1.
请教各位,这个问题是由于什么造成的,exe调用的DLL路径倒是由谁来决定的?虽然,我猜测把DLL跟exe放在一个目录下肯定没有这个问题,但是还是想知道其中的原理,谢谢!
关于VS2015编译的C++工程的DLL路径问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- oyljerry 2017-01-09 07:45关注
exe加载DLL的时候会有一系列的搜索路径
假如安全DLL搜索模式启用,搜索顺序如下: 1. 应用程序所在的路径 2. Windows SYSTEM目录。通过调用GetSystemDirectory函数可以获取这个目录的路径。 3. 16位系统的目录。并没有函数可以获取这个目录的路径,但是它会被查找。 4. Windows目录。通过调用GetWindowsDirectory函数可以获取这个目录的路径。 5. 当前目录 6. PATH环境变量指定的路径。请注意,这并不包括每个应用程序的应用程序路径注册表项中指定。在应用程序路径注册表项的键值并不作为DLL的搜索路径。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?