2016-05-16 122 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++ (多线程,“未来“)

我希望这有助于。 请让我知道,如果你发现更多!