2016-07-08 51 views
-2

我試圖使用一個共享庫,迄今沒有運氣。 的LIB被稱爲libORB_SLAM2.so並獲取與代碼編譯:如何在C++中包含共享庫? libORB_SLAM

https://github.com/MathewDenny/ORB_SLAM2

反正我沒在mono_tum代碼從示例文件夾複製在自己的項目(僅此單個文件),並試圖 編譯它只是使用共享庫。它說沒有找到「System.h」。 任何人都可以參加?

謝謝!

編輯:操作系統:Ubuntu 12.04 gcc 4.6,我已經使用了以下連接命令: gcc -L/home/user/Desktop/program/libs/lib -Wall -std = C++ 11 -o test mono_tum.cc -lORB_SLAM2.so 致命錯誤:System.h:沒有這樣的文件或目錄 編譯終止。

對於system.h中檢查GitHub的鏈接(包括文件夾)

+1

請提供您的操作系統環境,[MCVE]和您使用的鏈接器命令。 'System.h'不是標準的C++頭文件。 –

+0

我已添加一些信息!我希望這樣就夠了。至於源代碼將無意義發佈整個事情,因爲它是一個更大的圖書館。因此我發佈了該鏈接。 – luke

回答

1

你這裏什麼

error: System.h: No such file or directory compilation terminated. 

是一個編譯器錯誤,而不是一個連接錯誤。它告訴你的是,編譯器無法找到文件「system.h中」,列入mono_turn.cc的第29行:

#include<System.h> 

你可以找到在倉庫中的「包括」目錄中的文件。所以告訴你的編譯器,在哪裏可以找到它。使用類似

gcc ... -I/path/to/your/repository/clone/Include ... 

然後,你應該確保庫(文件名是libORB_SLAM2.so)是你告訴鏈接搜索庫,你

gcc ... L/home/user/Desktop/program/libs/lib 

所以

已經這樣做了
ls L/home/user/Desktop/program/libs/lib/libORB_SLAM2.so 

應該輸出一個有效的ls列表,只是爲了確保。需要注意的是,按照慣例,LIB前綴和.so後綴不會傳遞給鏈接,所以改變你的gcc標誌來

gcc ... -lORB_SLAM2 

所以,作爲下一步我想嘗試用

編譯項目
gcc -L/home/user/Desktop/program/libs/lib -I/path/to/your/repository/clone/Include -Wall -std=c++11 -o test mono_tum.cc -lORB_SLAM2 
+0

感謝您的所有努力!它的工作現在。 – luke

+0

很高興聽到,不客氣! – yussuf