# 环境
- VS 2019
- GDAL 2.3.2
# 配置教程
# 1. 下载 GDAL 2.3.2
下载地址:http://download.osgeo.org/gdal/ 或 https://github.com/OSGeo/gdal/releases
找到 gdal232.zip
文件下载到本地,解压并修改文件夹名,如: E:\ThirdSDK\gdal232
# 2. 修改源代码
用文本编辑器(如 notepad++)打开 nmake.opt
文件,在本教程中该路径位于 E:\ThirdSDK\gdal232\nmake.opt
,共需修改以下三处位置:
- 第 41 行的代码修改为:MSVC_VER=1921(注:vs2019 对应 1921,vs2017 对应 1910)
- 第 57 行的代码修改为:GDAL_HOME="E:\ThirdSDK\gdal2_x64_2019"
- 第 184 行的代码,去除
WIN64=YES
前面的#
符号
# 3. 编译源代码
以管理员身份运行适用于 VS 2017 的 x64 本机工具命令提示该程序(英文版本为 x64 Native Tools Command Prompt for VS 2017),如下图
注意,需要右键选择以管理员身份运行
在命令行中依次输入,并回车
C:\Windows\System32>E: | |
C:\Windows\System32>cd ThirdSDK\gdal232 | |
C:\Windows\System32>nmake /f makefile.vc |
稍微等十分钟,编译结束若无错误提示,再进行后续安装操作:
C:\Windows\System32>nmake /f makefile.vc install | |
C:\Windows\System32>nmake /f makefile.vc devinstall |
若无错误提示,安装即已完成。打开安装目录下的文件夹(代码修改的路径),会看到有 bin,data,html,lib,include
等几个文件夹,如下图
# 4. 在 VS2019 项目中配置 GDAL
打开 vs2019,创建一个 c++ 空项目,创建完成后将其改成 x64
。因为当前安装的 GDAL 为 win64 位版本,所以应选择 x64 进行编译执行,否则会出现模块计算机类型 “x64” 与目标计算机类型 “x86” 冲突这一问题
在 视图->其他窗口->属性管理器
,打开属性管理器。
在 Debug | x64
上右击,选择添加新项目属性表,如下图
然后双击新添加的项目属性表,在 包含目录
和 库目录
中添加编译好的 gdal
路径,如下图
点击应用。然后在 链接器->输入->附加依赖项
中点击编辑,手动输入 gdal_i.lib
,如下图
这个 gdal_i.lib
实际上就是 gdal 安装路径下 lib 文件夹里的那个 .lib 文件名
点击应用,确定,配置完成
# 5. 设置环境变量
依次点击 计算机->属性->高级系统设置->环境变量->系统变量
内的 path
,添加如下
依次点击确定按钮,确保环境变量生效
# 6. 拷贝 gdal203.dll 到 C:\Windows\System32
将 E:\ThirdSDK\gdal2_x64_2019\bin
路径下的 gdal203.dll
文件拷贝到 C:\Windows\System32
路径下
# 7. 编写代码测试
在刚刚创建的工程中创建 main.cpp
,编写如下代码,注意把图片路径换成自己本地的图片路径
#include <iostream>
#include "gdal_priv.h"
using namespace std;
int main()
{
const char* pszFile;
GDALAllRegister();
pszFile = "E:\\_image\\OpenCVTest\\lena.jpg";
GDALDataset* poDataset = (GDALDataset*)GDALOpen(pszFile, GA_ReadOnly);
GDALRasterBand* poBand = poDataset->GetRasterBand(1);
int xsize = poBand->GetXSize();
int ysize = poBand->GetYSize();
cout << xsize << endl;
cout << ysize << endl;
system("pause");
return 0;
}
注意,程序需要在 x64 下运行哦,最后成功输出图片尺寸,大功告成~
# 参考链接
- win10 x64 配置 VS2017 + GDAL
- VS2017 编译配置 GDAL—— 超详细,适合初学者!!!