2012-02-06 86 views
6

我是OpenCV的新手,我遇到了鏈接問題。我使用Ubuntu 11.10在Ubuntu上與OpenCV 2.3.1鏈接

,OpenCV的2.3.1根據this指導安裝:

我要建很多小應用它,它看起來很好。 通常,我與pkg-config --libs --cflags opencv建設。

現在,我試圖建立一些其他人編寫的框架,它編譯時沒有任何問題,但我無法鏈接它:有一長串「未解決的引用...」(數千他們)。沒有找到與opencv_core相關的所有符號。

我試圖重新編譯OpenCV沒有預編譯頭支持,沒有幫助。當然。 :(

的test_opencv_core應用程序運行正常,但opencv_rand失敗了。我覺得它說,opencv_core是正確的,在一般情況下,但它仍然當我需要它不工作...

可以請你?試着給我一些暗示我迷路有

謝謝你在前進, 大衛

更新:。 解決

gcc 4.6.1要求libs和源代碼在命令行中共享lib之前將會出現。爲什麼?不知道。剛剛度過24小時爲這個愚蠢的錯誤:(

更新:

連接器將搜索歸檔,只有一次,在該位置它 是: 可理解從LD手冊頁 如果檔案文件定義了一個符號 ,這個符號在命令行上的檔案文件 之前出現的某個對象中未定義,鏈接器將包含來自檔案文件的相應文件 但是,未定義的符號在出現的對象中稍後在命令行中將不會導致鏈接程序再次搜索 存檔。

請參見 - (選項的方式來強制鏈接搜索檔案 多次

就是這樣

+0

如果其他框架爲你鏈接到一個庫提供的,然後。你可能必須自己鏈接到OpenCV – 2012-02-06 07:30:07

+0

謝謝。這個框架被用作目標文件,而不是共享庫。我只是想編譯一個使用這些對象的示例應用程序,並且鏈接不起作用。 – David 2012-02-06 10:21:57

+3

你應該作爲答案發布你的解決方案(而不是問題編輯),並接受它。這樣,其他人知道它的答案 在將來。 – mevatron 2012-02-22 19:04:16

回答

1

GCC 4.6.1要求該庫和來源將出現在。 。路徑共享庫之前,命令行,我不知道爲什麼

更新: 無可厚非從LD手冊頁

鏈接器將只在命令行中指定 的位置搜索存檔。如果歸檔文件定義了一個符號 ,該符號在命令行上的歸檔文件 之前出現的某個對象中未定義,則鏈接器將從歸檔文件中包含相應的文件 。但是,稍後在命令行中出現 的對象中的未定義符號將不會導致鏈接程序再次搜索 存檔。

請參見 - (選項的方式來強制鏈接器搜索檔案 多次

就是這樣