我正在使用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)
我不知道该怎么做!
答案 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)GNU 11
(不确定这是否正确)GNU++11 [-std=gnu++11]
libc++ (LLVM C++ standard library with C++ 11 support)
MACOSX_DEPLOYMENT_TARGET = 10.10
libwx_osx_cocoa_static.a
更改为:lwx_osx_cocoa_static.a
(为什么,我不知道)我使用GNU ++ 11,因此libc ++能够使用像“future”这样的新功能 然后我将OpenCV添加到我新创建的wxXcode项目中:
编译器设置与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 ++ (多线程,“未来”)
我希望这会有所帮助。 如果你发现了更多信息,请告诉我!