GDAL编译 win10 VS2015 WIN32与X64 的 debug与release编译(终极修正)
2017-05-03 08:20
761 查看
最新GDAL下载
GDAL Source下载,这里下载对应的GDAL版本 http://download.osgeo.org/gdal编译方法:
本编译环境是在VS2015下进行的Win32版本的编译
1、打开 VS2015 x86 本机工具命令提示; 开始菜单->Visual Studio VS2015-> VS2015 x86 本机工具命令提示 2、通过cd 命令行命令 设置到GDAL资源目录 3、设置到GDAL目录后,以此键入如下命令行WIN32 DEBUG:nmake /f makefile.vc WIN32=TRUE DEBUG=TRUE
WIN32 RELEASE
nmake /f makefile.vc WIN32=TRUE RELEASE=TRUE
在执行第一条命令时,可能会出现如下错误:Creating library gdal_i.lib and object gdal_i.exp odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW gdal201.dll : fatal error LNK1120: 1 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"' : return code '0x460' Stop.
解决方案如下:
1.在gdal目录有一个nmake.opt文件,在内部找到如下内容:[plain] view plain copy!IFDEF ODBC_SUPPORTED ODBCLIB = odbc32.lib odbccp32.lib user32.lib !ENDIF 然后替换成:[plain] view plain copy!IFDEF ODBC_SUPPORTED !IF $(MSVC_VER) >= 1900 # legacy_stdio_definitions.lib : https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib !ELSE ODBCLIB = odbc32.lib odbccp32.lib user32.lib !ENDIF !ENDIF 保存后,然后再次执行命令:nmake /f makefile.vc
注:有可能这样会生成gdal库,但是我的是最新版本的GDAL,以上内容不需要更改,但是还是编译出现同样的错误。
最后我的解决方案是:
经过我仔细研究,很可能的原因是odbccp32.lib文件没有被找到,而egacy_stdio_definitions.lib先被找到了;因此,我们要找到odbc32.lib odbccp32.lib所在目录C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;然后将这两个lib文件复制粘贴到egacy_stdio_definitions.lib所在目录:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
最后再次依次执行以下3条命令:WIN32 DEBUG
nmake /f makefile.vc WIN32=TRUE DEBUG=TRUE
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN32=TRUE DEBUG=TRUE install
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN32=TRUE DEBUG=TRUE devinstallWIN32 RELEASE
nmake /f makefile.vc WIN32=TRUE RELEASE=TRUE
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN32=TRUE RELEASE=TRUE install
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN32=TRUE RELEASE=TRUE devinstall
然后C:\warmerda下会生成版本文件。
X64版本编译方法
与win32编译方法一样,只是使用的命令提示工具版本不一样,我们要使用x64 本机工具命令提示 1、打开 VS2015 x64 本机工具命令提示符; 开始菜单->Visual Studio 2015->VS2015x64 本机工具命令提示符 2、通过cd 命令行命令 设置到GDAL资源目录 3、执行命令:WIN64 DEBUGnmake /f makefile.vc WIN64=TRUE DEBUG=TRUE
WIN64 RELEASE
nmake /f makefile.vc WIN64=TRUE RELEASE=TRUE4、有可能会出现同样的错误Creating library gdal_i.lib and object gdal_i.exp odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW gdal201.dll : fatal error LNK1120: 1 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"' : return code '0x460' Stop. 采用同样的解决方法,更改make.opt文件。如果还是不能解决,我们需要找到odbc32.libodbccp32.lib所在目录C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;然后将这两个lib文件复制粘贴到egacy_stdio_definitions.lib所在目录:C:\ProgramFiles (x86)\Microsoft Visual Studio 14.0\VC\lib\adm64最后依次执行如下命令:X64 DEBUG:
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE install
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE devinstallX64 RELEASE:
nmake /f makefile.vc WIN64=TRUE RELEASE=TRUE
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN64=TRUE RELEASE=TRUE install
---------------------漫长的等待----------------------
nmake /f makefile.vc WIN64=TRUE RELEASE=TRUE devinstall
安装位置在:C:\warmerda
注:makefile用法#编译debug版本 nmake /f makefile.vc debug=1 #编译release版本 nmake /f makefile.vc release=1 #清除debug版本 nmake /f makefile.vc debug=1 clean #清除release版本 nmake /f makefile.vc release=1 clean
相关文章推荐
- WIN10+PCL1.8+VS2015 x64 安装及测试 (附PCLDebug.props与PCLRelease.props下载)
- VS2015 debug编译成功 release出错一堆
- Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib
- [OpenCv]Win10 X64 + VS2015 + CMake3.6.1 编译OpenCv3.1.0记录
- win7 vs2015 X64环境下编译gdal-2.0.1+geos-3.5.0+proj-4.9.2
- x86,x64,Debug,release在VS中的编译如何选择
- VS编译Debug和Release的区别
- 在vs2010 添加Gtest 测试框架X86 到x64 工程建立: 步骤 1. 先编译Gtest源码,生成DEBUG 版本"gtestd.lib"与RELEASE版本"gtest.lib"。此处不明
- vs2015编译gdal出错及解决方案
- Win10 + VS2015 下编译 Qt5.6.0
- vs2015编译gdal出错及解决方案
- [转] 关于VS中区分debug与release,32位与64位编译的宏定义
- Win10 + VS2015 下编译 Qt5.6.0
- 传统D3D11程序面向VS2015编译环境的配置修正细节
- vs中Debug和Release编译上的区别
- 关于VS中区分debug与release,32位与64位编译的宏定义
- 关于VS中区分debug与release,32位与64位编译的宏定义
- VS2015下编译64位GDAL总结
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别
- win10下使用VS2015+WDK10生成win7 X64的设备驱动的过程