LD:与STL库链接
问题描述:
我试图编译一个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库联系起来?
在此先感谢
答
正确的解决方法是建立与
g++ test.c -lhighgui -lcv -lcxcore -Wl,--enable-auto-import
不像你“GPP”的别名,这使图书馆其中引用它们的对象后(与归档库链接时重要的),并且还正确地将--enable-auto-import
标志传递给链接器。
您目前的“修复”仅适用于“意外”。
解决了它。尽管ld中的参数是“--enable-auto-import”,但在使用g ++进行编译时,只能使用“-enable-auto-import”。这样,我就可以编译并运行我的示例。 – ABC 2010-09-07 17:28:58