0

OpenCVでBRIEFとORBを使用したいのですが、OpenCVで(マッチングを高速化するために)SSE4.2を使用するには、gcc4.3以降でSSE4.2オプションを有効にしてOpenCVをコンパイルする必要があります。

Mac OSX10.6.8のデフォルトバージョンであるgcc4.2.1を使用してOpenCVをコンパイルするのに問題はありません。

次に、Macportsを使用してgcc4.3、4.4、4.5、4.6、4.7、4.8をインストールし、gccを新しいものに切り替えてみました。私は最初にOpenCVWebサイトの指示のようなデフォルト設定でOpenCVをインストールしようとしました。しかし、gcc4.2.1を使用したときのようにコードをコンパイルできませんでした。gcc4.2.1では問題ないことに注意してください。gcc4.3以降で問題が発生します。

問題の原因を教えてください。エラーはコンパイラの互換性に起因するようです。

いくつかのエラーは次のとおりです。

OpenCV-2.4.0/modules/highgui/src/window_cocoa.mm: In function 'void cvDestroyAllWindows()':
OpenCV-2.4.0/modules/highgui/src/window_cocoa.mm:198:21: error: expected ';' before 'in'
OpenCV-2.4.0/modules/highgui/src/window_cocoa.mm:198:21: error: 'in' was not declared in this scope
OpenCV-2.4.0/modules/highgui/src/window_cocoa.mm:198:24: error: expected ';' before 'list'


In file included from /opt/local/include/libavformat/avformat.h:42:0,
                 from OpenCV-2.4.0/modules/highgui/src/ffmpeg_codecs.hpp:78,
                 from OpenCV-2.4.0/modules/highgui/src/cap_ffmpeg_impl.hpp:56,
                 from OpenCV-2.4.0/modules/highgui/src/cap_ffmpeg.cpp:45:
/opt/local/include/libavcodec/avcodec.h:554:1: internal compiler error: Segmentation fault
Please submit a full bug report,
4

1 に答える 1

0

問題はfor(NSString *key in list)、window_cocoa.mmがObjective-C 2構造であり、Objective-C++としてコンパイルされていることです。

GNUのgccはバージョン2構文をサポートしていないため、これをコンパイルできません。Appleのgcc4.2には、Objective C 2を含むApple拡張機能が含まれていますが、純粋なgccには含まれていません。

clangコンパイラを試す必要があります。

于 2012-05-12T12:14:07.953 に答える