我刚刚开始使用libspatialindex。我运行了指示安装在http://libspatialindex.github.io/install.html,它使用以下命令在Ubuntu上安装好(除了我找不到它提到的autogen.sh)。在C++中未定义对libspatialindex函数的引用
./configure
make
sudo make install
然后我做了一个非常简单的程序来测试它,如下所示(基于https://github.com/libspatialindex/libspatialindex/wiki/Simple-Tutorial)
#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命名空间? – itachi
错误表示链接程序找不到相应的代码。请尝试更改顺序: g ++ spatial.cpp -lspatialindex -o spatial 我对单行编译和链接不是很有信心。我总是使用两遍:首先编译,然后链接对象与所需的库。 –
感谢您的建议@itachi,我尝试添加命名空间SpatialIndex(我编辑了上面的问题也显示了这一点),但仍然没有运气。我如何知道SIDX_Version中的名称空间?从文档http://libspatialindex.github.io/doxygen/sidx__api_8h.html – Patrick64