VS2015编译GEOS
下载链接:http://trac.osgeo.org/geos/
1. 打开cmake,加载geos源码和定位geos的工程存放位置;
2.点击configure,会报错,首先设置CMAKE_INSTALL-PREFIX定位到geos源码文件目录
3.然后打开链接https://trac.osgeo.org/geos/browser/trunk/cmake/modules
下载GenerateSourceGroups.cmake文件。
Setting GEOS version 3.5.1 as port of JTS 1.13.0 Setting GEOS C API version 1.9.1 Setting Visual Studio 2005+ option /MP to ON Setting GEOS compilation with small functions inlining - ON Generating GEOS E:/Geos/geos_3_5_build/include/geos/platform.h Generating GEOS E:/Geos/geos_3_5_build/include/geos/version.h Generating GEOS E:/Geos/geos_3_5_build/capi/geos_c.h Enable GEOS Unit Tests build - ON Enable GEOS XML Tester build - ON Enable GEOS large geometry tests build - ON CMake 3.12.0-rc1 successfully configured GEOS using Visual Studio 14 2015 Win64 generator Configuring done
Generating done
然后点击生成
编译GEOS 64bit, 第一次批生成可能会有两个工程失败,分别是geos_unit和xmltester,所以可以先编译这两个工程,方法是右键工程名-设置为启动项,然后生成以后就会报错,geos_unit工程的报错是sqrt函数重载的问题,修改方法是在参数前面加上(double),就可以识别出具体调用的哪个sqrt函数了;
xmltester工程的报错是round函数找不到标识,修改方法是在该cpp中添加头文件#include <geos/util/math.h>
,在round函数前面加上名字空间util::, 只做这一步,虽然暂时可以消除错误,但是在进行编译时出现:
error LNK2019: 无法解析的外部符号 "double __cdecl
geos::util::java_math_round(double)" (?java_math_round@util@geos@@YANN@Z),该符号在函数 "double __cdecl geos::util::round(double)"
(?round@util@geos@@YANN@Z) 中被引用
这时需要把\geos-3.5.1\src\util文件夹下的math.cpp粘贴到\geos-3.5.1\tests\xmltester文件夹下,并且把math.cpp添加到工程xmltester里面就可以了;然后批生成就行了。
5. 编译后需要转移以下文件到G:\OSGCore\Bulid\OpenSceneGraphic\3rdParty\下的对应位置:(第一个是将geos源码目录下的include文件夹下的geos文件夹拷贝到G:\OSGCore\Bulid\OpenSceneGraphic\3rdParty\include文件夹中,第二个是将编译工程文件夹下的include文件下的geos里面的两个.h文件拷贝到前面的G: \OSGCore\Bulid\OpenSceneGraphic\3rdParty\include\geos中,将编译后生成的lib文件拷贝到G:\OSGCore\Bulid\OpenSceneGraphic\3rdParty\lib下,将编译后生成的dll拷贝到G:\OSGCore\Bulid\OpenSceneGraphic\3rdParty\bin下)。如果找到的两个dll文件名称相同,则将debug下的dll的文件的名称后加上d(文件可以在geos编译的工程文件里面找)拷贝结束后的文件夹目录结构:
原文地址:https://www.cnblogs.com/herd/p/11399393.html
- 每日一水之strcmp用法
- HDU 3782 xxx定律
- HDU 2566 统计硬币
- HDU 2561 第二小整数
- python基础-数据类型与变量
- HDU 2520 我是菜鸟,我怕谁
- HUST 1586 数字排列
- next_permutation(全排列算法)
- Hadoop数据分析平台实战——100HBase和MapReduce整合离线数据分析平台实战——100HBase和MapReduce整合
- Hadoop数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)离线数据分析平台实战——120Hive Shell命令介绍 01(熟悉Hive略过)
- HUST 1588 辗转数对
- HUST 1584 摆放餐桌
- HUST 1585 排队
- 【QQ/微信个人号变身机器人】炸群+远程监控个人PC的尝试
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java基础之IO流(二)
- 数据可视化|如何用wordcloud绘制词云图?
- Java日志记录最佳实践
- Java基础之IO流(三)
- 百万并发「零拷贝」技术系列之Linux实现
- 前缀和与差分 Krains 2020-07-28 16:05:15
- 1477. 找两个和为目标值且不重叠的子数组 Krains 2020-07-30 09:50:18 动态规划滑动窗口
- 114. 二叉树展开为链表 Krains 2020-08-02 08:59:00 树
- 1478. 安排邮筒 Krains 2020-07-30 14:51:32 动态规划DFS数学
- 435. 无重叠区间 Krains 2020-07-28 11:26:10 贪心
- 632. 最小区间 Krains 2020-08-01 09:51:18 单调队列双指针堆
- 【R语言】高维数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()姐妹花
- 百万并发「零拷贝」技术系列之Java实现
- 腾讯云LiteAV、IM SDK(iOS)
- 在 Docker 中生成 ProtoBuffer、gRPC 文件