proj库配置与使用(window11,vs2019,x64)

前置安装依赖

1.SQLite3 安装 亲测

(97条消息) SQLite3源码下载与编译(开发环境:Win10+VS2022)_sqlite3 下载_林夕07的博客-CSDN博客

2.TIFF  亲测

(97条消息) Win11下基于cmake-3.26.3 完美编译 TIFF-4.5.0源码_tiff 编译_GIS子枫的博客-CSDN博客

安装他的方法,最后到编译才会报错:error MSB3073: 命令“setlocal。解决方法如下

最后生成的tiff在c盘

 3.curl 编译   亲测

编译很难,就直接在window上安装

(97条消息) Windows上安装Curl工具_windows curl 工具_Janson666的博客-CSDN博客

proj安装

方法一 亲测可以cmake生成,但是编译会出现Link报错,不会解决

(97条消息) PROJ 9.1.1源码下载编译(Win10+VS2022)_proj下载_林夕07的博客-CSDN博客

 config的时候看报啥错 就 把路径整上去

cmke报错记得别看warning,看error

 

编译link报错,可以 

删除了proj链接器中的CURL_ENABLED,哪个项目报错关于curl就删除CURL_ENABLED宏

方法二,我是照着配置Visual Studio C++环境中GDAL、SQLite与PROJ库的方法 - 知乎 (zhihu.com)

同时结合之前安装的一些前置库,还是在编译阶段报错 

无法解析的外部符号 __imp__curl_easy_init_QWQ_Plus的博客-CSDN博客

这些用处都没有,还是报错。

最后我把proj把动态库弄成静态库了再把test network删除  可以编译成功了

测试案例的时候发现上面的静态库方案不对,还是改成了动态库

最终!!!!!!!!!!!!!!!!!!

删除了proj链接器中的CURL_ENABLED 宏就可以编译通过了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

练习案例

#include <stdio.h>
#include <proj.h>
#include <iostream>
using namespace std;
int main(void) {PJ_CONTEXT* C;//用于处理多线程程序PJ* P;//初始化投影目标PJ* norm;//初始化投影目标PJ_COORD a, b;//初始化投影坐标/* or you may set C=PJ_DEFAULT_CTX if you are sure you will     *//* use PJ objects from only one thread                          */C = proj_context_create();//创建多线程,由于本示例为单线程,此处为展示作用P = proj_create_crs_to_crs(C,"EPSG:4326",//源投影"+proj=utm +zone=32 +datum=WGS84", //目标投影NULL);//创建在线程C内两个投影关系之间的相互转换if (0 == P) {cout << "Failed to create transformation object." << stderr << endl;return 1;}//如果P中两个投影的字符串不符合proj定义,提示转换失败/* This will ensure that the order of coordinates for the input CRS *//* will be longitude, latitude, whereas EPSG:4326 mandates latitude, *//* longitude */norm = proj_normalize_for_visualization(C, P);//在线程C内使投影目标P和norm拥有相同的坐标格式,此处为经纬度if (0 == norm) {cout << " Failed to normalize transformation object." << stderr << endl;return 1;}//norm为0,说明格式同步失败proj_destroy(P);//释放投影P = norm;//投影赋值/* a coordinate union representing Copenhagen: 55d N, 12d E    *//* Given that we have used proj_normalize_for_visualization(), the order of/* coordinates is longitude, latitude, and values are expressed in degrees. */a = proj_coord(12, 55, 0, 0);//设定待转换的投影坐标,此处分别为经度,纬度,高程,时间/* transform to UTM zone 32, then back to geographical */b = proj_trans(P, PJ_FWD, a);//投影转换,fwd代表源投影转换成目标投影,INV代表目标投影转换为源投影cout << "East: " << b.enu.e << "; North:" << b.enu.n << endl;;//经纬度转化为xy坐标b = proj_trans(P, PJ_INV, b);//xy坐标转化为经纬度坐标cout << "Longitude: " << b.lp.lam << "; Latitude: " << b.lp.phi << endl;;//lam为经度,phi为纬度/* Clean up */proj_destroy(P);proj_context_destroy(C); /* may be omitted in the single threaded case */return 0;
}

生成目录下添加tiff.dll和Proj那个dll

 EXE文件项目报错点

最后我生成的EXE项目到其他电脑运行无法找打proj.db。于是我知道缺少这个环境变量了

于是我把proj.db放到exe输出目录下。以及在主函数设定环境变量

boost::filesystem::path currentPath=boost::filesystem::current_path();
boost::process::environment env=boost::this_process::environment();
env["PROJ_LIB"]=currentPath.string();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/55388.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Gradle 骚操作,将两个项目合并到一个项目中

1. 前言 在工作中&#xff0c;由于各种原因&#xff0c;导致需要将两个可单独运行的App项目&#xff0c;合并到一个git仓库里&#xff0c;且单独的App项目里还有其他Module模块。 如果只是将两个项目复制到同一个文件夹下&#xff0c;还是得单独打开各个项目&#xff0c;是很不…

自然语言处理学习笔记(三)————HanLP安装与使用

目录 1.HanLP安装 2.HanLP使用 &#xff08;1&#xff09;预下载 &#xff08;2&#xff09;测试 &#xff08;3&#xff09;命令行 &#xff08;4&#xff09;测试样例 3.pyhanlp可视化 4. HanLP词性表 1.HanLP安装 HanLP的 Python接口由 pyhanlp包提供&#xff0c;其安装…

OSPF综合实验

实验题目如下&#xff1a; 实验拓扑如下&#xff1a; 实验要求如下&#xff1a; 【1】R4为ISP&#xff0c;其上只能配置IP地址: R4与其他所有直连设备间使用公有 【2】R3---R5/6/7为MGRE环境&#xff0c;R3为中心站点 【3】整个OSPF环境IP地址为172.16.0.0/16 【4】所有设备…

Elasticsearchr入门

首先在官网下载elasticsearch8.9版本&#xff0c;以及8.9版本的kibana。 解压&#xff0c;点击es8.9bin目录下的elasticsearch.bat文件启动es 如图所示即为成功。 启动之后打开idea&#xff0c;添加依赖 <dependency><groupId>com.fasterxml.jackson.core</g…

SpringBoot 日志文件

一、日志的作用 日志是程序的重要组成部分&#xff0c;想象一下&#xff0c;如果程序报错了&#xff0c;不让你打开控制台看日志&#xff0c;那么你能找到报错的原因吗 答案是否定的&#xff0c;写程序不是买彩票&#xff0c;不能完全靠猜&#xff0c;因此日志对于我们来说&a…

Flutter游戏引擎Flame系列笔记 - 1.Flame引擎概述

Flutter游戏引擎Flame系列笔记 1.Flame引擎概述 - 文章信息 - Author: 李俊才(jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132119035 【介绍】…

【笔记】第94期-冯永吉-《湖仓集一体关键技术解读》-大数据百家讲坛-厦大数据库实验室主办20221022

https://www.bilibili.com/video/BV1714y1j7AU/?spm_id_from333.337.search-card.all.click&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf

[LitCTF 2023]Http pro max plus

打开环境后提示说&#xff0c;只允许在本地访问&#xff0c;本地访问&#xff0c;还是想到了XFF字段 好家伙的&#xff0c;直接被嘲讽&#xff0c;还是了解太少了&#xff0c;都不知道还有没有其他方式可以控制ip地址信息 经过查看wp&#xff0c;得知一种新的方式 Client-IP …

VL 模型 Open-Set Domain Adaptation with Visual-Language Foundation Models 论文阅读笔记

Open-Set Domain Adaptation with Visual-Language Foundation Models 论文阅读笔记 一、Abstract 写在前面 又是一周周末&#xff0c;在家的时间感觉过得很快呀。今天没得时间写博客&#xff0c;留下个标题&#xff0c;明天搞完。 论文地址&#xff1a;Open-Set Domain Adapta…

PCIe总线详解

一、PCIe简介 PCI Express (peripheral component interconnect express) 简称PCIe&#xff0c;是一种高速、串行、全双工、计算机扩展总线标准&#xff0c;采用高速差分总线&#xff0c;并采用端到端的连接方式&#xff0c;因此在每一条PCIe链路中两端只能各连接一个设备。相对…

Docker安装Mysql、Redis、nginx、nacos等环境

相关系列文章&#xff1a; 1、DockerHarbor私有仓库快速搭建 2、DockerJenkinsHarbor 1、服务器 Ip部署内容说明192.168.88.7Docker、Mysql、redis、nacosnode1192.168.88.8Docker、Mysql、redis、nacosnode2192.168.88.9Docker、redis、nacos、nginxnode3 2、安装PXC8.0 Mys…

【C++】map和set

目录 一、容器补充1.序列式容器与关联式容器2.键值对3.树形结构的关联式容器 二、set1.set的介绍2.set的使用3.multset的介绍4.multset的使用 三、map1.map的介绍2.map的使用3.multimap的介绍4.multimap的使用 一、容器补充 1.序列式容器与关联式容器 我们已经接触过STL中的部…