Visual Studio 2019 (vs2019) C++ 环境配置GDAL

2301_81505962 2024-01-28 11:20:56

Visual Studio 2019 (vs2019) C++ 环境配置GDAL

在vs2019中配置、编译C++ 环境下GDAL库时,需要安装对应环境库:SQLite,PROJ,TIFF以及CURL工具。
GDAL库是一个非常方便的地理数据处理库,但其在C++ 环境下的配置与编译流程较为复杂。
版本选择:GDAL-3.5.2,PROJ-9.1.0,SQLite-3.44.2,tiff-4.6.0,curl-8.4.0_6-x86以及跨平台编译工具CMake-3.28.0。
编译结果:x86-release

文末有最终配置结果

1. SQLite (Win11+VS2019)

进入官网,下载相应版本

https://img-blog.csdnimg.cn/cf70cabe09a24d7297b295b990c467a2.png


解压后,将5个文件都放到一个指定的文件夹下,将该文件夹的路径添加到系统环境变量中,即可通过cmd使用,目的是为了便于通过命令行的方式使用。

https://img-blog.csdnimg.cn/5aee2c79fa0f4b88883e4b5ec59e4ca9.png


操作方法:右键我的电脑-属性-高级系统设置-环境变量,在系统环境变量中找到“Path”,选中“Path”,编辑,新建,将刚才的文件夹路径加入,例如:“C:\gdal-3.5.2\SQLite-3.44.2”。打开cmd,输入sqlite3,如果显示版本号等信息,即表示成功。

https://img-blog.csdnimg.cn/90385177d91842c4aec2572764e2a04b.png


sqlite3.exe是 SQLite 的交互式命令行工具,它允许用户与 SQLite 数据库进行交互、执行 SQL 查询、管理数据库和表,以及进行各种数据库操作。 详细介绍:sqlite3.exe 是一个命令行界面的工具,它允许用户打开 SQLite 数据库文件,并在命令行中执行 SQL 语句。可以使用它来创建数据库、创建表、插入数据、查询数据、更新数据、删除数据等等。它对于开发、测试和调试 SQLite 数据库非常有用,也可以用于执行数据库备份和还原操作。可以通过在命令行中运行 sqlite3.exe 并指定数据库文件来启动它,然后在交互式命令行中输入 SQL 命令。 sqldiff.exe 是 SQLite 的数据库比较工具,用于比较两个 SQLite 数据库文件之间的结构和数据差异。 详细介绍:sqldiff.exe 用于比较两个 SQLite 数据库文件,查找它们之间的差异,包括数据库结构(例如,表、列、索引等)和数据。这对于在不同环境中同步数据库、检测更改或合并数据库非常有用。sqldiff.exe 生成一个 SQL 脚本,该脚本包含将一个数据库变更为另一个数据库的命令。可以使用该脚本来将一个数据库的更改应用到另一个数据库。 sqlite3_analyzer.exe是 SQLite 的数据库性能分析工具,用于分析 SQLite 数据库文件的性能和结构。 详细介绍:sqlite3_analyzer.exe 可用于检查 SQLite 数据库文件的结构和性能特征。它可以生成详细的报告,包括数据库的 B 树索引结构、页面使用情况、表的大小等等。这些信息对于优化数据库查询和性能调整非常有用。另外还可以用于评估数据库文件的大小和性能,以便在需要时采取相应的措施来改进数据库的性能。】 参考链接: https://blog.csdn.net/qq_62888264/article/details/132551224 https://blog.csdn.net/weixin_43729127/article/details/132724907

2.TIFF-4.6.0 下载TIFF库与Cmake

https://img-blog.csdnimg.cn/6beb8d70739a4cffa06946f0f7c2b8cf.png


Cmake安装比较简单 此处下载的是精简版,解压后 执行bin文件里面的 cmake-gui.exe 即可用于编译了

https://img-blog.csdnimg.cn/2b4fbde488714b79bd3d296b9cef6293.png

https://img-blog.csdnimg.cn/26543555546848d49c6a439e74f0929a.png

根据个人需要进行版本设置

https://img-blog.csdnimg.cn/6dd75d823c4d4d8595dfa10c499d5e11.png

点击Configure 和 Generate 生成vs项目文件即可

https://img-blog.csdnimg.cn/8171b61ed9bc4b499fa82e2e63c91469.png


编译TIFF(控制台编译) 按照上述说的生成项目文件后 再win搜索框中找到 x64 Native Tools CommandPrompt for VS 2019然后右键管理员打开

https://img-blog.csdnimg.cn/de332734781447cf96a5d495d5512877.png


根据需要选择X86或者X64

https://img-blog.csdnimg.cn/ed0fa36c0ca14b4f8b88eee73abca1da.png


打开之后 进入到刚刚生成tiff源码的目录下(即:build)

https://img-blog.csdnimg.cn/9ddb4b201e1d46bcbef164ac6ff9618b.png


进入到tiff源码目录后 在控制台中输入如下命令 然后回车:

msbuild ALL_BUILD.vcxproj /p:Configuration="Release"

进入到tiff源码目录后 在控制台中输入如下命令 然后回车:

https://img-blog.csdnimg.cn/5fa95c75ba0f400bbbfb2ff1ac99f36c.png

紧接着在继续输入如下命令 再回车:

https://img-blog.csdnimg.cn/e2102ddbf8e84e818670c9e2c9470c74.png


操作到这一步后 根据上述路径提示 在C:\Program Files\tiff 里面就是编译好的文件啦。

https://img-blog.csdnimg.cn/66e7c9d8c7694505ac2ac0467d70552e.png

参考链接:https://blog.csdn.net/oFengtingwano/article/details/130742086

3. Curl工具 curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。 • 找到官网windows 资源下载,点击红色标记部分。 • 根据需要选择x86 or x64,此处选择curl 8.4.0 for Windows win32

https://img-blog.csdnimg.cn/853d056abd1d449f82793967113a1a5d.png


配置环境变量: 进入系统变量,新建CURL_HOME,路径选择解压包所在的路径,然后确定。

https://img-blog.csdnimg.cn/f9ce9b04d0fd4ca2a9611434fecd1abf.png

https://img-blog.csdnimg.cn/fea63e4fae1d42398678c8b023ea03ed.png

https://img-blog.csdnimg.cn/564a37082ad14bebbee23d271616a5e5.png


测试:curl --version

https://img-blog.csdnimg.cn/18a2cd51cec94049818e96e6bc8515b8.png

4. PROJ

PROJ库是一个地理坐标转换库,用以处理不同的地理坐标数据。

【Note】编译环境

https://img-blog.csdnimg.cn/708c729114b44d21aa303b7b9ee41cdd.png

https://img-blog.csdnimg.cn/82e5625ebdfb4dabab4addff596865d5.png


首先,我们在PROJ库的官方下载网站中下载其源代码。

https://img-blog.csdnimg.cn/fb61d477d8e84fa3ab375dbc8d05285b.png


解压后

https://img-blog.csdnimg.cn/412e1ef5f0b84a089118e3c5dbe8090f.png


CMake软件,并在下图所示的两个编辑栏中,分别选定解压后的PROJ库文件夹与我们刚刚在其中新建的build文件夹;随后,点击“Configue”。

https://img-blog.csdnimg.cn/74dbd69b56ef4a799098b4043a77cd77.png


在弹出的窗口中配置我们的Visual Studio软件版本,并在第二个选项中选择处理器的架构,一般选择x86即可

https://img-blog.csdnimg.cn/8d42305c903342c49c0539bf0a2291c5.png


Configure

https://img-blog.csdnimg.cn/a1421dd13f2c47f6a594b395a16bc66b.png

Generate

https://img-blog.csdnimg.cn/30149135d45e4513b0399df64e48c996.png

Open Project

https://img-blog.csdnimg.cn/d9dff147601247c781d40951a3c0400b.png


VS2019项目编译

https://img-blog.csdnimg.cn/64b3d841e98141b28bc208b9dc2190b6.png

https://img-blog.csdnimg.cn/4238f26cb74c436e88b3aa9d484932f5.png

https://img-blog.csdnimg.cn/442af112e7c04401852fa66d84e81491.png


打包编译成功的库 (1)打包头文件至./proj-9.1.0/include .\proj-9.1.1\src\*.h + .\proj-9.1.1\src\*.h + .\proj-9.1.1\include\*.h

(2)打包静态库 ./proj-9.1.0/lib .\proj-9.1.1-build\lib\release\proj.lib

(3)打包动态库./proj-9.1.0/bin 注:这里文件的移动还需要将后面的文件名中的版本信息给删去,方便后面调用。 .\proj-9.1.0\lib\release\proj.dll

https://img-blog.csdnimg.cn/87aeb69eba0640b19292a3bd1668f06d.png

Error】 CMake进行Configure时,有报错信息,如下:原因由于没有对PROJ编译时的依赖库进行配置

https://img-blog.csdnimg.cn/87dc9b7c16a848feaa6480ceb7f8ae61.png

https://img-blog.csdnimg.cn/785d5896d58b4a6ebf3ef08dee4d63b0.png


依赖库配置后

https://img-blog.csdnimg.cn/0fa6af1347024427a043a3371c7c7493.png

https://img-blog.csdnimg.cn/362f86dbf12a48029a8057fe67bce421.png

5. gdal-3.5.2 GDAL官网对应版本下载

https://img-blog.csdnimg.cn/c6bb2273e5d94c789098b19a92d8081d.png

https://img-blog.csdnimg.cn/760c5c432e614d2a9fed7ba1758475df.png


下载解压

https://img-blog.csdnimg.cn/7628606a07bb4265bd94a069629592b8.png

CMake编译

https://img-blog.csdnimg.cn/a6ec9cc9afdd4764839f740a98b1d4ae.png


Configure时,根据报错信息进行依赖库文件路径配置

https://img-blog.csdnimg.cn/ce0e60d4b5b64449bccfbc10ecc79e7a.png


配置依赖库PROJ库路径

https://img-blog.csdnimg.cn/ccaa06fc8dd344ba92a35fc61a38e510.png

https://img-blog.csdnimg.cn/db15883d4c6e4105968e80cf65f80d1b.png

https://img-blog.csdnimg.cn/c21bb73e874940abb2cc1d1bb6beb186.png


然后就是Open Project ->在vs2019环境下编译项目

https://img-blog.csdnimg.cn/a705be4ca2b841318e215985eebf723f.png

头文件目录:将以6个头文件进行合并

https://img-blog.csdnimg.cn/2f9e643462ec4064984a68ddcae399ed.png

https://img-blog.csdnimg.cn/9e943104e7be4e458b4c6e1ece047c47.png


动态库文件和静态库文件:

https://img-blog.csdnimg.cn/9f629800775642d7ac3aeefdbfb99035.png


最终结果

https://img-blog.csdnimg.cn/06980fb737fe437fb61a01038cf718e7.png

【测试】:报错

https://img-blog.csdnimg.cn/7e7003ae99584fde86a2cf719c714c49.png


处理:配置proj.db文件路径

std::string path = "C:\\gdal-3.5.2\\proj-9.1.0\\build\\data";
const char* proj_path[] = { path.c_str(), nullptr };
OSRSetPROJSearchPaths(proj_path);

https://img-blog.csdnimg.cn/9164a5a1c2264e349f4f5a3c5cb2797e.png


文章来源: https://blog.csdn.net/weixin_43763284/article/details/134649830
版权声明: 本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。


...全文
311 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,172

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 山月照空舟
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧