我剛剛開始使用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