2016-05-16 37 views
0

私はOpencv 3.1とwxwidgets 3.1を使ってプロジェクトを構築しています。私が使用しているコード: [wxOpenCvデモ1]opencv 3.1 wxwidgets cv :: imwriteエラー

関数cv :: imwrite()を使用して、書き込みフレームオブジェクトを追加しようとしました。 (私はCがC++などの呼び出しを変更:m_pCapture >> m_CurFrameにcvQueryFrame(m_pCapture);)私はこのエラーを取得する

を:wxWidgetsのなし

Undefined symbols for architecture x86_64:

"cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector > const&)", referenced from:

CCamera::SaveFrame() in camera.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

OpenCVの機能が正常に動作。だから、それはwxwidgetsとopencvの組み合わせと関係しているようです。

これはwxWidgetsのとOpenCVのと正常に動作します:

cv::imshow("tmp",m_CurFrame); 
cv::waitKey(4); 
//  cv::imwrite(Tmp , m_CurFrame); 

私は最後の行のコメントを解除した場合、私はエラーを取得します。

OS X:10ヨセミテと私は何これについて行うには見当がつかないデフォルトコンパイラ(アップルLLVM 7.0)

を使用!

+0

@DanQuichot、あなたはOS /コンパイラは何ですか? – Igor

+0

OS X 10ヨセミテに、あなたはあなたがimwriteはして渡しているどのような種類の –

+0

を使用します。? m_pCapture >> m_CurFrame; //カメラから新しいフレームを取得します \t std :: string Tmp = "Test.jpg"; \t cv :: imwrite(Tmp、m_CurFrame); – Igor

答えて

0

は、wxwidgets 3.1.0とOpencv 3.1を再コンパイルすることで問題(以上)を解決しました。私はこれらのリンクを使ってそれを得るようにしました。 C++ 11に対してコンパイルwxWidgetsのに

小型ガイド、OpenCVの:

コンパイルwxWidgetsの3.1.0:私はOSXのためにINSTALL.TXTに従いました。そして、私は追加this

から助けを借りて../configureコールを微調整:--enable-debugと私はXcodeのプロジェクトをビルドthis pageの助けを借りて、その後、MacOSXのバージョン

../configure --disable-shared --enable-debug --enable-unicode --with-cocoa --with-macosx-version-min=10.7 --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk CXXFLAGS="-std=c++0x -stdlib=libc++" CPPFLAGS="-stdlib=libc++" LIBS=-lc++ 

を変更しました。いくつかのことを微調整: (wxcocoa.xcodeprojとminimal.xcodeproj、およびすべての新しいプロジェクト)

  • は、ヘッダ検索パスに追加します。$(WXROOT)/build/osx(wx.xcconfigを見つけるために)
  • ベースSDKを:最新のOS X(10.11)
  • C言語の方言:GNU 11
  • C++言語の方言(これが正しいかどうかわからない):GNU++11 [-std=gnu++11]
  • C++標準ライブラリ:libc++ (LLVM C++ standard library with C++ 11 support)
  • は、WXROOTを「環境設定 - >場所 - >ソースツリー」に配置しました。重要ではありませんが、より良い場所であるようです(xcodeを再起動してください)
  • in wxcocoa。xcconfig私が変更されました:私が使用できるようにするにはGNU ++ 11ので、libcの++を使用

(なぜ、私は知らない)lwx_osx_cocoa_static.aMACOSX_DEPLOYMENT_TARGET = 10.10

  • はどういうわけか、私はへlibwx_osx_cocoa_static.aから作成したライブラリの名前を変更する必要がありますHOWTOインストール・ビルドおよび使用-OpenCVの-MacOSXの-10:(のためにウェブを検索:これを以下

    • コンパイルのOpenCV:「未来」 のような新機能は、私はその後、私の新しく作成されたwxXcodeプロジェクトにOpenCVのを追加しました-10)
    • メイクwxWidgetsのビルドと一致する
    • コンパイラの設定はwxWidgets(上を参照)と同じです (追加:これを行うために、私はいくつかの行を(Opencv-masterフォルダ)のCMakeLists.txt線より下:# OpenCV compiler and linker options (私はここで、このトリックを見つけました:OpenCV with C++11 on OS X 10.8

      メッセージ( "libcの++とC++ 11のためのXcodeの設定。") セット(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "C++ 0xの"):のためのウェブを検索します セット(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libcの++")

    • そして、新しく作成されたのwxWidgetsのXcodeプロジェクト(のためにウェブを検索更新するには、このページに従ってください:HOWTOセットアップ - Xcodeの-6-1ツー仕事と-OpenCVのライブラリを)

    これはトリックを行う必要があります!私は今、私はこれが役に立てば幸いwxWidgetsの、OpenCVのとlibcの++ (マルチスレッディング、「未来」)

    を組み合わせることができます。 あなたがより多くを見つけた場合は私に知らせてください!

  • 関連する問題