OSG教程::GDAL编译 win10 VS2015 WIN32与X64 的 debug与release编译(终极修正)

最新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

	在执行第一条命令时,可能会出现如下错误:
  1. Creating library gdal_i.lib and object gdal_i.exp  
  2. odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW  
  3. gdal201.dll : fatal error LNK1120: 1 unresolved externals  
  4. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"' : return code '0x460'  
  5. Stop. 
解决方案如下:
1.在gdal目录有一个nmake.opt文件,在内部找到如下内容:

[plain]  view plain  copy
  1. !IFDEF ODBC_SUPPORTED  
  2. ODBCLIB = odbc32.lib odbccp32.lib user32.lib  
  3. !ENDIF  

然后替换成:

[plain]  view plain  copy
  1. !IFDEF ODBC_SUPPORTED  
  2. !IF $(MSVC_VER) >= 1900  
  3. # 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  
  4. ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib  
  5. !ELSE  
  6. ODBCLIB = odbc32.lib odbccp32.lib user32.lib  
  7. !ENDIF  
  8. !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 devinstall

 

WIN32 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 DEBUG

	nmake /f makefile.vc WIN64=TRUE DEBUG=TRUE
WIN64 RELEASE
 
	nmake /f makefile.vc WIN64=TRUE RELEASE=TRUE

   4、有可能会出现同样的错误

 
  1. Creating library gdal_i.lib and object gdal_i.exp  
  2. odbccp32.lib(dllload.obj) : error LNK2019: unresolved external symbol _vsnwprintf_s referenced in function StringCchPrintfW  
  3. gdal201.dll : fatal error LNK1120: 1 unresolved externals  
  4. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"' : return code '0x460'  
  5. Stop. 

     采用同样的解决方法,更改make.opt文件。

如果还是不能解决,我们需要找到odbc32.lib odbccp32.lib所在目录C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;然后将这两个lib文件复制粘贴到egacy_stdio_definitions.lib所在目录:C:\Program Files (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 devinstall

X64 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用法
  1. #编译debug版本  
  2. nmake /f makefile.vc debug=1  
  3. #编译release版本  
  4. nmake /f makefile.vc release=1  
  5. #清除debug版本  
  6. nmake /f makefile.vc debug=1 clean  
  7. #清除release版本  
  8. nmake /f makefile.vc release=1 clean 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值