(根据伙伴们遇到的错误,博客一改再改,几乎不能再详细了!)墙裂推荐
博客在参照前人配置GDAL的基础上,通过自己一步步的配置,再通过示例代码进行检验,整理出一套完整的GDAL配置流程。详细的配置流程(见目录)如下:
(其中1-5为编译GDAL,6-8是将GDAL配置到VS2017。如果你刚好也是VS2017,只需要下载https://download.csdn.net/download/qq_32153213/10931474或https://download.csdn.net/download/u012373405/10830051或
https://pan.baidu.com/s/1Fzq9b0OXFlh2lLLnRtpbqg 提取码:m4cj
,然后从第6步开始。)
目录
3、以管理员身份运行适用于VS2017的X64的本机工具命令提示
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配置好。