VS2017编译配置GDAL——超详细,适合初学者!!!

(根据伙伴们遇到的错误,博客一改再改,几乎不能再详细了!)墙裂推荐

       博客在参照前人配置GDAL的基础上,通过自己一步步的配置,再通过示例代码进行检验,整理出一套完整的GDAL配置流程。详细的配置流程(见目录)如下:

(其中1-5为编译GDAL,6-8是将GDAL配置到VS2017。如果你刚好也是VS2017,只需要下载https://download.csdn.net/download/qq_32153213/10931474https://download.csdn.net/download/u012373405/10830051

https://pan.baidu.com/s/1Fzq9b0OXFlh2lLLnRtpbqg   提取码:m4cj 
,然后从第6步开始。)

目录

1、下载GDAL

2、修改源代码

3、以管理员身份运行适用于VS2017的X64的本机工具命令提示

4、编译GDAL

5、安装GDAL

6、在VS2017的项目中配置GDAL

7、设置环境变量

8、测试是否配置成功


1、下载GDAL

官方下载地址为https://trac.osgeo.org/gdal/wiki/DownloadSource,我下载的版本是gdal-2.3.1。建议将其解压在某个盘的根目录,比如我的解压地址是D:\gdal-2.3.1,为了方便使用,将解压文件名改为gdal(一定要改!)。

2、修改源代码

找到解压目录中的nmake.opt文件,例如本文的文件路径为:D:\gdal\nmake.opt。然后用VS2017打开,不建议用其他文本编辑器。我一共修改了文件中的三个位置:

  • 第41行的代码修改为:MSVC_VER=1910(根据编译器来确定。1400是指 VS 版本为2010,1800是指 VS 版本为2013,1900是指 VS 版本为2015,1910是指 VS 版本为2017,1921是指 VS 版本为2019)
  • 第57行的代码修改为:GDAL_HOME = "D:\gdal"
  • 修改第184行的代码:原来为# WIN64=YES修改为WIN64=YES

3、以管理员身份运行适用于VS2017的X64的本机工具命令提示

适用于VS2017的X64的本机工具命令提示可以在开始菜单中找到,一定要以管理员身份运行。如果你的VS2017是英文版,请以管理员身份运行x64 Native Tools Command Prompt for VS 2017

4、编译GDAL

在命令行中依次输入以下三行代码:

  • cd D:\gdal
  • d:
  • nmake /f makefile.vc

开始编译,编译过程需要几分钟。

5、安装GDAL

编译结束继续执行如下两条命令:

  • nmake /f makefile.vc install
  • nmake /f makefile.vc devinstall

打开安装目录下的文件夹(代码修改的路径)有bin,data,html,lib,include几个文件夹则安装完成。

6、在VS2017的项目中配置GDAL

打开vs2017,新建一个  c++  空项目。然后通过视图->其他窗口->属性管理器,打开属性管理器。

在如下图的红色框内,右键选择属性。

在VC++目录依次添加包含目录、库目录

再在链接器->输入添加附加依赖项,手动输入gdal_i.lib    如下图所示:

依次点击应用->确定。至此,gdal在VS2017中配置成功了。

7、设置环境变量

依次点击计算机->属性->高级系统设置->环境变量->系统变量内的 path 


点击上图红色框标记的编辑,添加:D:\gdal\bin 

点击确定按钮,为了保险起见,此时应该将电脑重启,才能确保环境变量生效。

8、测试是否配置成功

以下是我从网上找到的一段测试代码,只需要一张jpg格式的图像,然后将代码pszFile = "D:/2.jpg";修改成你自己的图片路径和名字即可。注意:程序需在X64下运行!

#include "gdal_priv.h"
#include<iostream>  
using namespace std;
int main()
{
	const char* pszFile;
	GDALAllRegister();
	pszFile = "D:/2.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;
}

如果能够成功输出图片的尺寸,那么恭喜你大功告成了!

 

博客主要参考了

http://m15989223765.blog.163.com/blog/static/233430095201421725748335/

https://blog.csdn.net/Dragonzxc/article/details/80356883

https://blog.csdn.net/u011574296/article/details/76565703

对这些博主表示真心的感谢,没有他们的付出,我也很难将gdal配置好。

评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值