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
在執行第一條命令時,可能會出現如下錯誤:
- 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檔案,在內部找到如下內容:
- !IFDEF ODBC_SUPPORTED
- ODBCLIB = odbc32.lib odbccp32.lib user32.lib
- !ENDIF
然後替換成:
- !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
注:有可能這樣會生成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、有可能會出現同樣的錯誤
- 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.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用法
- #編譯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
相關推薦
GDAL編譯 win10 VS2015 WIN32與X64 的 debug與release編譯(終極修正)
最新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,這個就
Debug 和 Release 編譯方式
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
VLAN與Trunk的配置及命令(思科)
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