我有一个使用gdal作为库的C ++代码。在visual studio 2013上使用intel c ++编译器16编译。
在配置中,我指定要链接的gdal库路径和库文件:
其他库目录:C:\ OSGeo4W64 \ lib(其中gdal_i.lib是)
附加依赖项:gdal_i.lib
它曾经在几个月前工作过,但我的系统中必定会有所改变。现在,当我尝试我的可执行文件时,我得到一个错误的弹出窗口:
序号361无法位于动态链接库SSLEAY32.dll
我可以通过从可执行文件夹中的gdal文件夹复制SSLEAY32.dll或者从我的代码中删除对gdal的任何调用来修复它,但我想修复我的系统。如何告诉Windows查看正确的目录(我使用了PATH很多但没有成功)。
使用Dependency Walker,似乎gdal.dll不是我的OSGEO路径中的那个,而是取自我的miniconda安装。有没有一个干净的方法来解决它?我虽然如果一个库在同一个文件夹中有它的依赖项,那么就会使用它们。
编辑:解决方案,感谢Naidu的回答:
在路径的开头添加 C:\ OSGeo4W64 \ bin; ,以便优先使用正确的gdal202.dll。
但是现在python不再启动了,因为它没有在miniconda文件夹中选择自己的gdal库,而是在OSGeo4W64中...我可以使用相同的路径选择一个或者另一个但不是两个
解决方案首先在PATH中放置Miniconda python可执行文件的目录,然后是OSGeo4W64库路径,然后是Miniconda库路径
答案 0 :(得分:1)
其他库目录将仅用于查找.lib(静态库)文件,但不能用于查找DLL。
查找DLL,如下面链接中的顺序所示。
https://msdn.microsoft.com/en-us/library/7d83bc18.aspx
现在,如果要拾取您想要的DLL,请将DLL放在上面链接中所述的前4个步骤中的任何位置.....或者您可以编辑用户的PATH变量环境变量的变量,包含DLL位置。
因为
用户变量优先于系统环境变量。该 用户路径附加到系统路径。