conda安装GDAL+Visual Studio2019
第一次配置C++的第三方库,发现还可以用conda直接装,无需编译,写个博客记录一下。
GDAL安装
最开始在网上搜教程,基本都是下载GDAL的源码再编译,而且GDAL3.0要先装sqlite和proj。后来看到gdal官网推荐用conda安装。之前用Python装了Anaconda,就觉得试一下,免去了编译的过程。
- 新建环境。打开Anaconda的命令行。 conda create -n gdal python=3.6。然后conda activate gdal 激活。
- 根据官网的提示,直接敲conda install -c conda-forge gdal安装。
- 安装完成以后就可以配置VS了。
Visual Studio配置
-
新建项目,右键项目名称->属性。
-
把编译器版本设成64位!!很重要,否则就相当于给32位的项目使用64位的lib,报错link2019,无法解析的外部符号。
-
设置包含目录和库目录。常规->VC++目录
包含目录即头文件.h所在的目录,库目录即.lib所在目录。Anaconda安装的GDAL的目录还和安装在哪个envs有关。默认应该是:
包含目录:…\Anaconda3\envs\gdal\Library\include
库目录:…\Anaconda3\envs\gdal\Library\lib
可以双击空白,用三个点来选。 -
修改调试的工作目录。GDAL的运行需要一系列动态链接库的支撑。由于没有设置系统变量且conda没有把.dll文件装到lib目录下,还需要自己设置。
配置属性->调试->工作目录
\Anaconda3\envs\gdal\Library\bin
-
链接。链接器->输入->附加依赖项 手敲gdal_i.lib。
测试
创建一个空项目,引入gdal读取一张影像。
#include "gdal_priv.h"
#include <iostream>
using namespace std;
void getinfo(const char* filepath) {
GDALAllRegister(); // 注册所有驱动
GDALDataset* pDS = (GDALDataset*)GDALOpen(filepath, GA_ReadOnly);
if (!pDS) {
pDS = (GDALDataset*)GDALOpen(filepath,GA_ReadOnly);
}
char* cProject = (char*)pDS->GetProjectionRef();
OGRSpatialReference srs;
if (strlen(cProject) > 0) {
OGRErr er = srs.importFromWkt(&cProject);
}
double dTransform[6];
CPLErr er = pDS->GetGeoTransform(dTransform);
if (er != CE_None) //证明没有投影
dTransform[5] = -1;
GDALDataType gdalDataType = pDS->GetRasterBand(1)->GetRasterDataType();
int gdalDataTypeSize = GDALGetDataTypeSize(gdalDataType);
int XSize = pDS->GetRasterXSize();
int YSize = pDS->GetRasterYSize();
cout << "宽度为" << XSize << endl;
cout << "高度为" << YSize << endl;
}
int main() {
const char* filepath = "D:/Workspace/C++/gdaltest/test.tif";
getinfo(filepath);
return 0;
}
测试结果: