2016-05-16 123 views
0

我正在使用Opencv 3.1和wxwidgets 3.1構建一個項目。我使用的代碼: [wxOpenCv Demo 1]opencv 3.1 wxwidgets cv :: imwrite error

我嘗試使用函數cv :: imwrite()添加寫入幀對象。 (我改變了的C調用C++的如:cvQueryFrame(m_pCapture)到m_pCapture >> m_CurFrame;)

我得到這個錯誤:

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)

沒有wxWidgets的OpenCV的功能,做工精細。所以它似乎與wxwidgets和opencv的組合有關。

這工作得很好用的wxWidgets和OpenCV:

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

如果我去掉最後一行,我得到的錯誤。

OS X:10 Yosemite和我使用默認的編譯器(蘋果LLVM 7.0)

我不知道怎麼處理這件事!

+0

@DanQuichot,什麼是你的OS /編譯? – Igor

+0

OS X 10優勝美地和我使用默認編譯器(Apple LLVM 7.0) –

+0

您能顯示您傳遞給imwrite的什麼類型嗎? – Igor

回答

0

通過重新編譯wxwidgets 3.1.0和Opencv 3.1解決了問題(以及更多)。我用這些鏈接去實現它。

小指南編譯wxWidgets的,針對opencv的C++ 11:

編譯的wxWidgets 3.1.0:我遵循OSX的INSTALL.TXT。而從this

我加扭捏與幫助../configure電話:--enable-debug並與this page幫助我建立一個xcode項目改變Mac OS X版本

../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)
  • 在wxcocoa。xcconfig我改變:MACOSX_DEPLOYMENT_TARGET = 10.10
  • 不知怎的,我要創建的庫的名字從libwx_osx_cocoa_static.a更改爲:lwx_osx_cocoa_static.a(爲什麼,我不知道)

我使用GNU + 11,從而libc中++,以便能夠使用像「未來」 新功能我加入的OpenCV到我的新創建的wxXcode項目:

  • 編譯OpenCV的以下這一點:(搜索網址:HOWTO安裝建造和使用的,OpenCV的-MacOSX的-10 -10)
  • Make sur e,SDK是正確的版本(這裏是我最大的問題),匹配構建wxWidgets
  • 編譯器設置與wxWidgets相同(見上) (增加:)爲此,我添加了一些行(Opencv-master文件夾)中的CMakeLists.txt。線下:# OpenCV compiler and linker options (我在這裏發現了這個竅門:在網頁中搜索: 「與libc中設置的Xcode的C++ 11 ++」 OpenCV with C++11 on OS X 10.8

    消息() 集(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++ (多線程,「未來「)

我希望這有助於。 請讓我知道,如果你發現更多!