Win10 64 位VS2010下 使用GDAL221開發

1.下載GDAL源碼並解壓到任意文件夾
All source releases are available for download from:
2.2.1 Latest Stable Release - June 2017

2.修改編譯配置
在解壓後的根目錄下找到“nmake.opt”,

(1)配置成開發所用的VS版本
!IFNDEF MSVC_VER
#assume msvc VS2010.
MSVC_VER=1600
!ENDIF

下面是一些編譯器版本的_MSC_VER值
Visual C++ 2015 MS VC++ 14.0 _MSC_VER = 1900
Visual C++ 2013 MS VC++ 12.0 _MSC_VER = 1800
Visual C++ 2010 MS VC++ 10.0 _MSC_VER = 1600
Visual C++ 2008 MS VC++ 9.0 _MSC_VER = 1500
Visual C++ 2005 MS VC++ 8.0 _MSC_VER = 1400
(2)配置GDAL安裝路徑
!IFNDEF GDAL_HOME
GDAL_HOME = "C:\gdal-runtime“
!ENDIF
(3)配置Python安裝路徑
!IFNDEF PYDIR
PYDIR = "C:\Python27"
!ENDIF
(4)64位開發配置
# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.
WIN64=YES
(5)支持大於4G的TIF文件
# if using an external libtiff library
TIFF_INC = -Ic:/libtiff/libtiff
TIFF_LIB = c:/libtiff/lib/libtiff.lib
# uncomment following line, if you have libtiff version >= 4.0 to
# enable BigTIFF support
TIFF_OPTS= -DBIGTIFF_SUPPORT

3.編譯源文件
點擊開始--所有程序--Visual Studio 2010--Visual Studio x64 Win64 Command Prompt(2010),如下圖所示:

進入源文件所在的文件夾,鍵入"cd E:\gdal-2.2.1",
鍵入"nmake /f makefile.vc"執行編譯。
編譯過程可能需要一些時間。

3.安裝文件

(1)鍵入"nmake /f makefile.vc install"
E:\gdal-2.2.1>nmake /f makefile.vc install

執行完畢後,在設置好的配置文件夾 "C:\gdal-runtime“下增加了bin,data,及html文件夾。

可以看到:在文件夾bin已生成gdal201.dll文件(GDAL庫的核心),這個DLL文件來執行實質性的操作。 

(2)鍵入"nmake /f makefile.vc devinstall"執行完畢後,配置文件夾下增加了lib,include文件夾。這兩個文件夾主要用於C及C++的開發。 

4.配置VC++目錄
在VS2010工程的屬性中加入GDAL的include文件夾C:\gdal-runtime\include,在庫目錄添加lib文件夾C:\gdal-runtime\lib。
 
5. 測試
#include"gdal.h"
#include"gdal_priv.h"

CString fileStrName =_T("E:\\test064.jpg");
int len = WideCharToMultiByte( CP_ACP , 0 , fileStrName , fileStrName.GetLength() , NULL , 0 , NULL , NULL );
char* pAscii =new char[len+1];
len = WideCharToMultiByte( CP_ACP , 0 , fileStrName , fileStrName.GetLength() , pAscii , len+1 , NULL ,NULL );
pAscii[len] = 0;
const char* fileName = (const char*)pAscii;

GDALDataset *poDataset=NULL; //GDAL數據集
GDALAllRegister();

poDataset = (GDALDataset*)GDALOpen(fileName, GA_ReadOnly);
if (poDataset == NULL){
AfxMessageBox(_T("文件打開不成功"));
}
else{
AfxMessageBox(_T("文件打開成功"));
}
6. 開發錯誤調試
(1)找不到dll文件的錯誤,兩種解決方案:
        方法1、在環境變量 path中加入 ;
        方法2、將找不到的dll文件都拷貝到Debug下。
(2)GDALOpen unresolved external symbol
error LNK2019: unresolved external symbol VSIFree
error LNK2019: unresolved external symbol "public: class CPLStringList
error LNK2019: unresolved external symbol CPLStrdup
error LNK2019: unresolved external symbol CSLFindString
error LNK2019: unresolved external symbol CSLPartialFindString
error LNK2019: unresolved external symbol CPLAtomicAdd
error LNK2019: unresolved external symbol GDALGetDataTypeSizeBytes
error LNK2019: unresolved external symbol GDALOpen
error LNK2019: unresolved external symbol GDALAllRegister
解決方案:
stdafx.h中添加一句:
#pragma comment(lib, "gdal_i.lib")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章