【发布时间】:2015-04-22 18:47:38
【问题描述】:
我刚刚开始使用 libspatialindex。我浏览了instructions to install,它使用以下命令在 ubuntu 上安装正常(除了我找不到它提到的 autogen.sh)。
./configure
make
sudo make install
然后我做了一个非常简单的程序来测试它如下(基于this)
#include <spatialindex/capi/sidx_api.h>
using namespace SpatialIndex;
int main(int argc, char* argv[])
{
char* pszVersion = SIDX_Version();
}
编译如下:
g++ -lspatialindex spatial.cpp -o spatial
它给了我错误:
/tmp/ccACK3p4.o: In function `main':
spatial.cpp:(.text+0xa): undefined reference to `SIDX_Version'
collect2: ld returned 1 exit status
我尝试了许多不同的方法,例如改用 cmake 并将其安装到不同的文件夹,但没有运气。有什么想法吗?
编辑:
在上面添加了命名空间 SpatialIndex,我也尝试了以下方法,但仍然没有运气:
g++ -c -o spatial.o spatial.cpp
g++ -o spatial spatial.o -lspatialindex -lm
【问题讨论】:
-
你是否包含了 spatialindex 命名空间?
-
错误说链接器没有找到对应的代码。请尝试更改顺序: g++ spatial.cpp -lspatialindex -o spatial 我对单行编译和链接不是很有信心。我总是使用两遍:首先编译,然后将对象与所需的库链接。
-
感谢@itachi 的建议,我尝试添加命名空间 SpatialIndex(我也编辑了上面的问题以显示这一点)但仍然没有运气。我如何知道 SIDX_Version 在哪个命名空间中?从文档中不清楚libspatialindex.github.io/doxygen/sidx__api_8h.html
-
@MelVisoMartinez,我尝试了相反的方法并将编译和链接分开(如我对问题的编辑所示)但没有运气。
标签: c++ spatial-index