g ++编译多个文件

时间:2011-07-10 14:22:46

标签: g++

我的问题是使用g ++将程序与多个文件的编译链接起来(我通常使用vstudio,但是......)。

  1. 如果我只使用main.cpp(并为openCV包含适当的头文件),一切都可以

    g++ main.cpp -o main  -I"C:\OpenCV2.1\include\opencv" -L"C:\OpenCV2.1\lib" 
    -lcxcore210 -lcv210 -lhighgui210
    
  2. 如果我有main.cpp和一些otherfile.cpp(都需要openCV)并使用

    g++ main.cpp otherfile.cpp -o main  -I"C:\OpenCV2.1\include\opencv" 
    -L"C:\OpenCV2.1\lib" -lcxcore210 -lcv210 -lhighgui210
    

    它根本不起作用我得到了

    c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: a
    uto-importing has been activated without --enable-auto-import specified on the c
    ommand line.
    This should work unless it involves constant data structures referencing symbols
     from auto-imported DLLs.
    C:\Users\ONDEJM~1\AppData\Local\Temp\ccNisCoC.o:main.cpp:(.text+0x16d0): undefin
    ed reference to `cv::Mat::Mat(_IplImage const*, bool)'
    C:\Users\ONDEJM~1\AppData\Local\Temp\ccNisCoC.o:main.cpp:(.text+0x16f1): undefin
    ed reference to `cv::FAST(cv::Mat const&, std::vector<cv::KeyPoint, std::allocat
    or<cv::KeyPoint> >&, int, bool)'
    C:\Users\ONDEJM~1\AppData\Local\Temp\ccNisCoC.o:main.cpp:(.text$_ZN2cv3Mat7relea
    seEv[cv::Mat::release()]+0x3f): undefined reference to `cv::fastFree(void*)'
    collect2: ld returned 1 exit status
    
  3. 我做错了什么?

2 个答案:

答案 0 :(得分:0)

将“-Wl, - enable-auto-import”传递给g ++。阅读ld关于此的文档。

答案 1 :(得分:0)

嗯,似乎我犯了一个愚蠢的错误......解决方案很简单:只需用g ++重新编译所有openCV二进制文件,一切都会好的!