spatialie运行出错的解决办法

如果程序链接到spatialite出现以下错误:

lt-demo2: geos_ts_c.cpp:3657: int GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t, geos::geom::CoordinateSequence*, unsigned int, unsigned int, double): Assertion `0 != cs‘ failed.
[1]    15401 abort (core dumped)  ./demo2

十有八九是因为spatialite依赖的库GEOS多线程出问题了,我碰到的情况是GEOS 3.5.0 + spatialite 4.3.0a。解决办法是下载spatialite 4.4.0-RC1的源码,用以下命令重新编译:

./configure --prefix=/usr --enable-libxml2  CPPFLAGS="$CPPFLAGS -DGEOS_USE_ONLY_R_API"

因为GEOS库几乎所有函数都有两个版本:非线程安全(不带‘_r‘,比较老)和线程安全(带‘_r‘)的版本。新版spatialite(4.4.0-RC1)编译也必须加上CPPFLAGS="$CPPFLAGS -DGEOS_USE_ONLY_R_API"这个选项才会调用线程安全的版本。

该问题我在macOS Homebrew和Archlinux官方源安装的版本里都遇到了,是个埋藏很深的雷。写在这里希望对后来者有所帮助。

ref: https://groups.google.com/forum/?hl=en&fromgroups=#!topic/spatialite-users/9-32tVQ-720

时间: 2024-10-15 16:21:54

spatialie运行出错的解决办法的相关文章

orthomcl 运行出错的解决办法

blast结果5个G similarSequences.txt 2.5G 运行失败,提示表的行数超过最大值,文件大小超过最大值. 需修改/etc/mysql/my.cnf 将myisam_sort_buffer_size  = 8M修改为 myisam_sort_buffer_size  = 64M 添加myisam_max_sort_file_size = 20G 将innodb_buffer_pool_size  = 128M修改为 innodb_buffer_pool_size  = 51

在windows中的DOS窗口执行adb shell出错的解决办法

1,首先要检查是否已经配置好环境变量或者在platform-tools目录(adb.exe存在的路径)下执行的adb shell 2,步骤1没问题的话,那么运行:adb kill-server 再执行:adb shell 好了,问题解决(PS:反正我的解决了) 在windows中的DOS窗口执行adb shell出错的解决办法,布布扣,bubuko.com

Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法

原文:Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法 前几个月使用Advanced Installer 打包了一堆安装包,其中有使用默认主题的,也有根据UI设计更改过一些功能的,当时在Windows7下测试没有任何问题,就直接上线给用户使用了. 这两天在禅道上发现指派了一个BUG过来,描述的内容是在Windows10下安装包会出现重启后再次自动运行的问题,见鬼了,没有写过自启动注册表啊,马上打开工程查看,发现了一个很奇怪的现象,下面来介绍. 1.当

Windows下Apache配置SSL以支持https及出错的解决办法

步骤一:安装apache,使其支持SSL,并安装php 1.安装配有SSL模块的apache,apache_2.2.8-win32-x86-openssl-0.9.8g 2.配置apache以支持SSL: 1)打开apache的配置文件conf/httpd.conf LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf 去掉两行前面的# 2)注意修改httpd-ssl.conf 文件里的两个字段: S

win 2008 64位IIS7出现数据库链接出错的解决办法

法一:开启父路径 在IIS7中ASP默认情况下,"父路径"是没有启用的,我们必须手动开启"父路径",选择"True",搞定"父路径"选项.具体操作如下图所示: 打开"Tnternet信息服务(IIS)管理器",左侧栏选择"Default Web Site",内容区域选择"ASP",如下图: 双击打开"ASP",在"行为"中,将&

freeradius 安装出错的解决办法

sudo apt-get install freeradius-mysql Selecting previously unselected package freeradius-mysql. (Reading database ... 65261 files and directories currently installed.) Preparing to unpack .../freeradius-mysql_2.1.12+dfsg-1.2ubuntu8_amd64.deb ... Unpa

在eclipse下安装ADT插件出错的解决办法

通过Google大神,在国外网站,找到相应的解决办法!还是Google比较权威呀. Go to Help, "Install New Software..." Click on "Available Sofware Sites" Search http://download.eclipse.org/releases/indigo and enable it Search http://download.eclipse.org/tools/cdt/releases/i

在WIn32程序中使用MFC的CInternetSession运行异常,主要是因为获取目前应用程序名出错的解决办法

转载:http://group.gimoo.net/review/22564 头文件#include <afxinet.h"> 在非MFC工程中使用CInternetSession抛异常的原因,调试跟踪到说AfxGetAppName为空 解决办法:创建CInternetSession 有参对象 CInternetSession InternetSession(_T("myagent"));

Linux使用curl 方式安装docker-compose 后执行docker-compose version 检查安装是否成功时出错的解决办法

0x0.缘起: 今天在一台新的Fedora 25上按照官方文档,使用curl方式安装 docker-compose后,验证是否安装成功时出错: 安装时使用的命令为; curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`ur/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 我试