2010-09-07 121 views
3

我試圖編譯一個OpenCV的VideoCapture示例。當我編譯它,我得到以下的輸出:LD:與STL庫鏈接

gpp test.c 
Info: resolving vtable for cv::VideoCapture by linking to __imp___ZTVN2cv12VideoCaptureE (auto-import) 
c:/programs/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: auto-importing has 
enable-auto-import specified on the command line. 
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs. 

(順便說一句,GPP是一個別名到g ++ -lhighgui -lcv -lcxcore)

於是,我試着用「GPP --enable編譯-auto-import「,但是g ++沒有認出這個選項。所以,我試圖編譯如下:

gpp -c test.c 
ld test.o 

而且我得到了同樣的錯誤,並且對STL功能很多其他錯誤,表明它沒有與STL鏈接:

undefined reference to std::cout 
... 

而且,最後,當我這樣編譯:

gpp -c test.c 
ld --enable-auto-import test.o 

這次,我只有STL錯誤。 VideoCapture錯誤消失了!所以我想我解決了這個問題。唯一的問題是:我如何讓ld將我的程序與STL庫聯繫起來?

在此先感謝

+0

解決了它。儘管ld中的參數是「--enable-auto-import」,但在使用g ++進行編譯時,只能使用「-enable-auto-import」。這樣,我就可以編譯並運行我的示例。 – ABC 2010-09-07 17:28:58

回答

2

正確的解決方法是建立與

g++ test.c -lhighgui -lcv -lcxcore -Wl,--enable-auto-import 

不像你「GPP」的別名,這使圖書館其中引用它們的對象後(與歸檔庫鏈接時重要的),並且還正確地將--enable-auto-import標誌傳遞給鏈接器。

您目前的「修復」僅適用於「意外」。

相關問題