此問題不是特定於Fubi,而是一般鏈接器問題。這幾天(讀作5)已經充滿了鏈接錯誤,但我已經設法將其縮小到僅有的幾個。嘗試編譯Fubi時鏈接錯誤
我想在Linux環境下編譯Fubi(全身交互框架)。它僅在Windows 7上進行過測試,並且網絡缺乏在* nix平臺上編譯的資源。
現在,就像我上面提到的,我有大量的鏈接問題,主要涉及不正確的g ++標誌。 Fubi需要OpenNI和NITE(以及OpenCV,如果你願意的話)才能提供它的基本功能。我已經能夠成功編譯來自OpenNI和NITE框架的兩個樣本。
據我所知,Fubi是一個框架,因此我需要編譯一個共享庫而不是二進制文件。
當我嘗試使用下面的命令
g++ *.cpp -lglut -lGL -lGLU -lOpenNI -lXnVNite_1_5_2 -I/usr/include/nite -I/usr/include/ni -I/usr/include/GL -I./GestureRecognizer/ -o FubiBin
到其編譯爲二進制文件,我得到位於here輸出。 (這是很長的,我不想破壞格式)
如果我反而編譯成目標文件(-c標誌),沒有錯誤出現,它成功地建立目標文件。請注意,我用下面的命令:
g++ -c *.cpp -lglut -lGL -lGLU -lOpenNI -lXnVNite_1_5_2 -I/usr/include/nite -I/usr/include/ni -I/usr/include/GL -I./GestureRecognizer/
我然後我能夠使用ar
命令生成靜態鏈接庫。沒有錯誤[可能]發生(這只是我的一個猜測),因爲它還沒有通過鏈接器運行,所以這些錯誤不會出現。
感謝您的耐心和閱讀所有這一切。最後,提問時間:
1)試圖編譯爲二進制文件時,關於未定義引用主正常的第一個錯誤?我搜索了該文件夾內的所有文件,並且沒有一個主要函數存在。
2)未定義的參考錯誤的其餘部分抱怨說,他們無法找到提到的功能。所有這些函數都位於子目錄GestureRecognizer/中的.cpp和.h文件中,該文件是我正在編譯的路徑的子目錄。因此,參數-I./GestureRecognizer/
是否可以解決此問題?
我想確保在創建共享庫時我不會在運行時遇到任何鏈接問題。當所有這些錯誤在嘗試編譯爲二進制文件時是否會消失,如果它們最初鏈接正確?
啊,這是問題。我並沒有包括'GestureRecognizer/*。cpp'所以這些錯誤消失。謝謝你的協助。順便說一句,這個項目不需要你評論有關'-I ......」的一部分。同時,感謝您的鏈接提示。這是非常新的給我,所以我真的很感激。 – soplu