2011-07-10 17 views
1

をコンパイルすると、 g ++で複数のファイルとプログラムをリンクする(通常はvstudioを使用しますが...)。g ++複数のファイルをコンパイルする

  1. 私はmain.cppにを使用して(とOpenCVのための適切なヘッダファイルをインクルードする)場合は、私はmain.cppに、いくつかotherfile.cpp(必要性の両方を持っている場合は、すべてが

    g++ main.cpp -o main -I"C:\OpenCV2.1\include\opencv" -L"C:\OpenCV2.1\lib" 
    -lcxcore210 -lcv210 -lhighgui210 
    
  2. とokですOpenCVの)、それは単に動作しないと私は

    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. を得た

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

    を使用

私は間違っていますか?

+2

これは、コンパイルの問題ではなくリンクの問題です。 main.cppとotherfile.cppを別々にコンパイルして、結果の.oファイルを一緒にリンクしようとしましたか?これはエラーにまったく影響しますか? – Dan

+0

はい、試しました。両方のファイルを別々にコンパイルすることは問題ではありませんが、一緒にビルドすると同じエラーが返されます – morph

+0

関連するhttp://stackoverflow.com/questions/1095298/gcc-c-linker-errors-undefined-reference-to-vtableを参照してください-123-xxx-undefined-references/1095321#1095321これについての詳細は – jonsca

答えて

0

私はばかばかしい間違いをしたようです...解決策は簡単です:すべてのopenCV binarriesをg ++で再コンパイルするだけです。すべてがOKです!

0

"-Wl、 - enable-auto-import"をg ++に渡します。これに関するldのドキュメントを読んでください。

+0

未定義の参照ではありません。 – morph

関連する問題