VS2022编译Geos库
2026/6/4 18:57:19 网站建设 项目流程

文章目录

  • 下载源码
  • 编译
    • 方式1
    • 方式2
  • 示例
  • 在线API

参考:https://blog.csdn.net/weixin_39951988/article/details/102660387

下载源码

官方网站:GEOS

进入下载页面:Download and Build | GEOS,点击下载geos-3.14.1.tar.bz2

编译

方式1

vs2022从【文件】-【打开】-【CMake】选择CMakeLists.txt,从而打开工程。生成了out文件夹里面有默认的编译结果。通过在vs中修改配置实现不同的编译需求。
例如dll位于目录out\build\x64-Debug\bin中,lib位于out\build\x64-Debug\lib中。

方式2

在源码上层目录创建一个build文件夹:

在build目录里面打开powershell,输入:

cmake ../geos-3.14.1 -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON

除了使用VS2022打开build/GEOS.sln工程编译项目,还可以打开x64 Native Tools Command Prompt for VS 2022,然后输入命令:

msbuild GEOS.sln /p:Configuration=Release /p:Platform=x64

msbuild未配置未全局命令,所以只能局部使用。

编译结果在build/bin/Release目录。

geos.dll是c++ API
geos_c.dll是c API

符号库在build/lib/Release目录。

示例

创建控制台项目。
添加头文件目录:geos-3.14.1\include
添加附加库目录,即上述geos.lib所在目录。
添加附加依赖项:geos.lib。
将geos.dll复制到exe所在目录。

示例代码:

使用的Release模式,与上述编译的Release模式的dll和lib相匹配。
也可以使用Debug模式,并使用Debug模式编译的dll和lib。

#include"geos.h"#include<iostream>#include<geos/io/WKTReader.h>#include<geos/io/WKTWriter.h>usinggeos::geom::Geometry;usinggeos::geom::GeometryFactory;usinggeos::io::WKTReader;usinggeos::io::WKTWriter;intmain(){//计算两个点的距离Coordinatec1(10,20);Coordinatec2(20,10);std::cout<<"distance = "<<c1.distance(c2)<<std::endl;//解析wkt为几何GeometryFactory::Ptr factory=GeometryFactory::create();WKTReaderreader(*factory);std::stringwkt_a("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))");std::stringwkt_b("POLYGON((5 5, 15 5, 15 15, 5 15, 5 5))");autog=reader.read(wkt_a);std::unique_ptr<Geometry>geom_a(reader.read(wkt_a));std::unique_ptr<Geometry>geom_b(reader.read(wkt_b));std::unique_ptr<Geometry>inter=geom_a->intersection(geom_b.get());WKTWriter writer;writer.setTrim(true);std::string inter_wkt=writer.write(inter.get());std::cout<<"Geometry A: "<<wkt_a<<std::endl;std::cout<<"Geometry B: "<<wkt_b<<std::endl;std::cout<<"Intersection(A, B): "<<inter_wkt<<std::endl;std::cout<<"Hello World!\n";}

在线API

https://libgeos.org/doxygen/hierarchy.html

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询