opencv 3.1 wxwidgets cv :: imwrite错误

时间:2016-05-16 13:33:14

标签: xcode7 wxwidgets opencv3.1

我正在使用Opencv 3.1和wxwidgets 3.1构建项目。我使用的代码: [wxOpenCv演示1]

我尝试使用函数cv :: imwrite()添加一个写帧对象。 (我将c调用改为c ++,例如:cvQueryFrame(m_pCapture)改为m_pCapture>> m_CurFrame;)

我收到此错误:

  

架构x86_64的未定义符号:

     

“cv :: imwrite(cv :: String const&,cv :: _ InputArray const&amp ;,,,   std :: vector> const&)“,引自:

     

CAMamera :: SaveFrame()in camera.o

     

ld:找不到架构x86_64的符号

     

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

没有wxwidgets,opencv函数可以正常工作。所以它似乎与wxwidgets和opencv的组合有关。

这适用于wxwidgets和Opencv:

A

如果我取消注释最后一行,我会收到错误。

OS X:10 Yosemite,我使用默认编译器(Apple LLVM 7.0)

我不知道该怎么做!

1 个答案:

答案 0 :(得分:0)

通过重新编译wxwidgets 3.1.0和Opencv 3.1来解决问题(以及更多)。我使用这些链接来实现它。

编译wxWidgets的小指南,针对C ++ 11的Opencv:

编译wxwidgets 3.1.0:我遵循OSX的install.txt。并在this

的帮助下调整了../configure调用

我添加了--enable-debug并更改了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++

然后在this page的帮助下,我构建了一个xcode项目。调整一些事情: (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放在“preference-> locations-> Source Trees”下。不重要,但似乎是一个更好的位置(重启xcode)
  • 在wxcocoa.xcconfig中我改了:MACOSX_DEPLOYMENT_TARGET = 10.10
  • 不知何故,我必须将创建的库的名称从libwx_osx_cocoa_static.a更改为:lwx_osx_cocoa_static.a(为什么,我不知道)

我使用GNU ++ 11,因此libc ++能够使用像“future”这样的新功能 然后我将OpenCV添加到我新创建的wxXcode项目中:

  • 在此之后编译OpenCV :(在网上搜索:howto-install-build-and-use-opencv-macosx-10-10)
  • 确保SDK是正确的版本(这是我最大的问题),匹配wxWidgets的构建
  • 编译器设置与wxWidgets相同(见上文) (添加:)为此,我在(Opencv-master文件夹)中的CMakeLists.txt添加了一些行。行下方:# OpenCV compiler and linker options (我在这里找到了这个技巧:在网上搜索:OpenCV with C++11 on OS X 10.8

    消息(“使用libc ++为C ++ 11设置Xcode。”)  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD“c ++ 0x”)  set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY“libc ++”)

  • 然后按照此页面更新新创建的wxWidgets xcode项目(在网上搜索:howto-setup-xcode-6-1-to-work-with-opencv-libraries)

这应该可以做到!我现在可以结合使用wxWidgets,OpenCV和libc ++ (多线程,“未来”)

我希望这会有所帮助。 如果你发现了更多信息,请告诉我!