环境
- os:win10.0.17134.472
- vs:vs2015 Community(14.0.25431.01 Update 3)
问题
需要在C++11的环境中使用GDAL库,编译Release x64版本的可执行文件。
- 本机编译GDAL2.0/2.1均失败
- 使用编译好的GDAL2.3提示缺少各种dll
- 下载完各种dll,配置环境变量,又提示缺少msvcr90.dll,在本机可以翻出N多该文件,都是随着安装目录带出来的。尝试了把几个复制到运行目录下,各种失败,会报0xc000007b或R6034的错误。
解决
在各种的关键字的搜索下,看到了第一个解决缺少msvcr90.dll的帖子,试了,没有用。ms社区解决缺少msvcr90.dll。然后发现第二个关于R6034的帖子,发现是32位的,而且参数这么多,复制试了下,无效。解决R6034。绕了一圈仍没解决之后,我又找到了这个帖子,ESRI关于R6034的错误解决,有参数配置。解决R6034(2)
就去找了本机上的一个在amd64文件夹下的msvcr90.dll(C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\Microsoft.VC90.CRT),找到了相关的manifest文件,所有参数都有!按照上一个帖子的配置,在文件中添加
#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.VC90.CRT' version='9.0.30729.4148' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")
。
然后运行xx.exe -h,成功了。
解决是搜索中间的一个问题R6034解决了。原因可能是msvcr90.dll版本太多,在环境中编译器不知道搜索那个导致的,添加这句后指定位置的指定版本,程序就可以正常运行了。
附
GDAL2.3编译好的头文件,库文件,dll文件下载路径:
- GDAL2.3 Core(dll)。安装目录默认在C:\Program Files\GDAL,安装完成后添加到环境变量Path中。
- GDAL 2.3 lib和include文件。