1. 程式人生 > >GDAL編譯 win10 VS2015 WIN32與X64 的 debug與release編譯(終極修正)

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檔案,在內部找到如下內容:
  1. !IFDEF ODBC_SUPPORTED  
  2. ODBCLIB = odbc32.lib odbccp32.lib user32.lib  
  3. !ENDIF  

然後替換成:
  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 

相關推薦

GDAL編譯 win10 VS2015 WIN32X64debugrelease編譯終極修正

最新GDAL下載 GDAL Source下載,這裡下載對應的GDAL版本   http://download.osgeo.org/gdal 編譯方法: 本編譯環境是在VS2015下進行的  Win32版本的編譯   1、開啟 VS2015 x86 本機工具命令提示;

opencv-contrib編譯win10+vs2015+opencv3.4.1

環境win10+vs2015+opencv3.4.1 編譯過程可以在網路上找到很多,https://blog.csdn.net/ezhchai/article/details/80557936,這個就

DebugRelease 編譯方式

Debug 和 Release 編譯方式的區別本文主要包含如下內容: 1. Debug 和 Release 編譯方式的本質區別 2. 哪些情況下 Release 版會出錯 3. 怎樣“除錯” Release 版的程式 Debug 和 Release 編譯方式的本質區別     D

C/C++ 程式編譯連結的過程詳解靜態連結

我們知道一個程式的執行需要經過編譯和連結兩個階段,其過程究竟是怎樣的呢? 程式的編譯階段分為以下幾個步驟,分別是預編譯、編譯、彙編、生成二進位制可重定向檔案(.o)。 預編譯: 首先是原始碼檔案xxx.c和相關的標頭檔案被預編譯器編譯成一個.i檔案。

win7下編譯Microsoft版的caffe包的MATLAB接口CPU模式

第三方庫 blank res tps setting 後綴名 www .exe 系統路徑 本博客是基於http://www.cnblogs.com/njust-ycc/p/5776286.html這篇博客修改的,做出了更正與補充。 本人機器的環境:Win7+MATLAB2

VC6.0在Win10下的兼容性問題設置可以試試

log 可執行 ros .com 機器語言 默認安裝 program lang 軟件開發工具 Microsoft Visual C++ 6.0,簡稱VC6.0,是微軟推出的一款C++編譯器,將“高級語言”翻譯為“機器語言(低級語言)”的程 序。Visual C++是一個功能

《大數據日知錄:架構算法》讀書筆記多圖

打通 導論 ges wid 技術分享 二次 思維 知識點 很好 第二次讀這本書,這次是精讀,畫了思維導圖。書很好,完整的知識結構和由淺入深的介紹,非常全面以至於知識點都梳理了三天。 作為導論式的總覽,對大數據領域有了個總體的認識,接下來可以更針對性地加強和實踐。 總體上

sugar阿龍的互懟第一季

電視劇 不回 多人 戀愛 談戀愛 吃飯 spa 都在 中國 § 第一季 回家風波 高考了,啦啦啦~ 快要高考了,顯然sugar很傷心。 顯然不是因為快要考試了sugar才

《深入理解Java虛擬機:JVM高級屬性最佳實踐》讀書筆記更新中

pen 內存區域 深度 span 進化 ria 最短 描述 core 第一章:走進Java 概述 Java技術體系 Java發展史 Java虛擬機發展史 1996年 JDK1.0,出現Sun Classic VM HotSpot VM, 它是 Sun JDK 和 Open

XSS的原理分析解剖:第三章技巧篇**************未看*****************

第二章 != chrom 插入 是把 調用 bject innerhtml ats ??0×01 前言: 關於前兩節url: 第一章:http://www.freebuf.com/articles/web/40520.html 第二章:http://www.free

VLANTrunk的配置及命令思科

term mark pre pc機 ace nag -i vpd ble 實驗目的:實現同VLAN之間通信 ;不同VLAN不能通信;實驗步驟:1.先給PC機配置同一個網段的IP地址;因為不同IP網段要加路由器;2.給交換機SW1,SW2創建相應的VLAN;不同設備使用acc

Vue中實現後臺的數據交換vue-resource

交換 ins server img 展示 引入 oca 方式 文件夾 vue-resource是Vue.js的一款插件,它可以通過XMLHttpRequest或JSONP發起請求並處理響應。(但是目前它已經停止更新了) 1、在vue中安裝vue-resource插件 打開v

11 非阻塞套接字IO多路復用進階

img 一行 回調 lba let 自己 elf accept error: 1、非阻塞套接字 第一部分 基本IO模型 1.普通套接字實現的服務端的缺陷 一次只能服務一個客戶端! 2.普通套接字實現的服務端的瓶頸!!! accept阻塞! 在沒有新的套接字來之前,不能處

半邊資料結構網格細分演算法Loop subdivision附程式碼

網格細分的原理其實並不難理解,它的難點主要在於如何實現。在看過無數有原理無程式碼的部落格後,終於決定寫一寫我的實現方法,並附上程式碼供大家參考。c++寫的可能比較笨拙,望見諒。 1.半邊資料結構 很好理解,就是把網格的每一條邊分成兩個半邊,半邊是有方向的同一條邊的兩個半邊方向相反。並且一條邊

資料結構實驗之棧佇列四:括號匹配SDUT 2134

#include <bits/stdc++.h> using namespace std; typedef long long ll; char s[100]; char a[100]; int main() { int i,j,k,f,top,len; while(

已知任意平面方程,推導座標旋轉變換的結論方法終極,願願原創。

本文將繼續探討,座標旋轉變換,不同之處,上兩篇各用三次,兩次旋轉變換,這一篇要用一次旋轉變換。 如下圖: 如圖,還是任意的平面方程,o2-xy面,在該平面上,如棕色和草綠色箭頭所示,我們的目標是,經過一次選擇,達到我們的o2-x‘’y‘’z‘’與o2-xyz重合的目的(也就是,棕色軸與

poj刷題debug日記:poj1276多重揹包

Cash Machine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39032

資料結構演算法分析c語言描述Mark Allen--佇列ADT連結串列實現

佇列ADT連結串列實現 使用連結串列儲存 操作集合 入隊 出隊 初始化 返回隊前元素 列印 #include <stdio.h> #includ

資料結構演算法分析c語言描述Mark Allen--迴圈佇列ADT陣列實現

迴圈佇列ADT陣列實現 使用陣列儲存 操作集合 入隊 出隊 清空 初始化 返回隊前元素 列印 重點注意! 對於一個迴圈佇列 front == rear時候佇列

vue 原生app的對接互動混合開發

小夥伴們在用vue開發h5專案特別是移動端的專案,很多都是打包後掛載在原生APP上的,那就少不了與原生互動了,我最近就是在坐這個,踩了一些坑,拿出來給大家分享下。 0.通過url傳輸資料:(一般是在入口頁面傳下app的使用者資訊進來供vue h5使用) 1 methods: { 2