【问题标题】:OpenCV for iOS - Linking Libraries in XcodeOpenCV for iOS - 在 Xcode 中链接库
【发布时间】:2015-11-06 20:09:15
【问题描述】:

作为团队项目的一部分,我打算使用 open cv 为机器人实现障碍物检测。我现在的功能代码可以在 OS X 上运行,并使用我的笔记本电脑摄像头来检测接近它的障碍物。然而,机器人运行 iOS(本质上是 iPad),因此需要我为 iOS 构建。显然,由于架构不匹配,链接器现在不接受 OS X 库文件。目前设置如下:
1./usr/local/lib添加到Library Search Paths
2./usr/local/include添加到Header Search Paths
3.c++语言方言改为C++11
4.库添加到Other Linker Flags(-lopencv_calib3d等)
5.Valid Architectures设置为i386,x86_64

为了对 iOS 进行必要的修改,我首先将有效架构更改为 armv7、armv7s 和 arm64。然后我尝试按照OpenCV:Installation in iOS 上的说明,要求我执行opencv/platforms/ios/build_framework.py 脚本。这构建了一个框架文件和一个文件夹build。我通过Build Phases -> Link Binary With Libraries.将框架文件添加到我的Xcode项目中根据python脚本的readme“脚本为iOS构建OpenCV.framework。构建的框架是通用的,它可以用于构建应用程序和在 iOS 模拟器或真实设备上运行它。”但是,当我尝试为 iOS 模拟器(以及其他)构建产品时,我得到了无数的 Undefined symbols for architecture x86_64 链接器错误。据我所知,上面链接的安装说明没有其他内容。

我在这里遗漏了什么吗?调整标题/库搜索路径以不包含任何内容或来自/usr/local/lib 的 OS X OpenCV 库文件无济于事。我的直觉是,这与由 python 脚本创建的文件夹 build 以及 opencv2.framework 文件有关。 build 的内容是文件夹:
iPhoneOS-arm64
iPhoneOS-armv7
iPhoneOS-armv7s
iPhone模拟器-i386
iPhoneSimulator-x86_64

这些又包括:

我是否需要将这些文件夹的任何部分链接到我的项目中?

感谢您的任何建议。

热烈的问候,
标记

编辑:这是我在为 iOS 模拟器编译时遇到的链接器错误。在为另一个架构 x(例如 armv7)编译时,我得到了完全相同的错误,仅在 Undefined symbols for architecture x 行中有所不同。

Ld /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL 普通 x86_64 cd "/Users/schuegrafm/Documents/SS15/CooperativeRobots/Double IRL Project/Double_IRL" 导出 IPHONEOS_DEPLOYMENT_TARGET=6.0 导出 PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin: /usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.4.sdk -L/Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Debug-iphonesimulator -F/Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Debug-iphonesimulator -F/Users/schuegrafm/Documents/SS15/CooperativeRobots/Double\ IRL\ Project/Double_IRL/.. -F/Users/schuegrafm/Documents/Programming_Tools/ios -filelist /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL .LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -stdlib=libc++ -mios-simulator-version-min=6.0 -framework opencv2 -framework DoubleControlSDK -framework ExternalAccessory -framework UIKit -framework Foundation -framework CoreGraphics -Xlinker -dependency_info -Xlinker /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL_dependency_info.dat -o /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL

架构 x86_64 的未定义符号:
“_AVCaptureSessionPresetMedium”,引用自: CvCaptureCAM::startCaptureDevice(int) in opencv2(cap_avfoundation.o) "_AVFileType3GPP",引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVFileTypeAppleM4V”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVFileTypeMPEG4”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVFileTypeQuickTimeMovie”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVMediaTypeVideo”,引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvCaptureFile::CvCaptureFile(char const*) 在 opencv2(cap_avfoundation.o) CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVVideoCodecH264”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVVideoCodecJPEG”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVVideoCodecKey”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVVideoHeightKey”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_AVVideoWidthKey”,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_CMSampleBufferGetImageBuffer”,引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CMSampleBufferInvalidate",引用 从: opencv2(cap_avfoundation.o) "_CMTimeMake" 中的 CvCaptureFile::retrieveFramePixelBuffer(),引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) 在 opencv2(cap_avfoundation.o)
“_CMVideoFormatDescriptionGetPresentationDimensions”,引用自: CvCaptureCAM::getProperty(int) const in opencv2(cap_avfoundation.o) "_CVBufferRelease",引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVBufferRetain",引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferCreateWithBytes", 参考自: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) in opencv2(cap_avfoundation.o) "_CVPixelBufferGetBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetBytesPerRow", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetHeight",引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVPixelBufferGetWidth", 引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferLockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferRelease",引用 从: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) 在 opencv2(cap_avfoundation.o) "_CVPixelBufferUnlockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVAssetReader", 参考自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVAssetReaderTrackOutput" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVAssetWriter" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVAssetWriterInput" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVAssetWriterInputPixelBufferAdaptor" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVCaptureDevice" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVCaptureDeviceInput" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVCaptureSession" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVCaptureVideoDataOutput" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_OBJC_CLASS_$_AVURLAsset" 中的 objc-class-ref,引用自: opencv2(cap_avfoundation.o) "_kCMTimeZero" 中的 objc-class-ref,引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_kCVPixelBufferHeightKey”,引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o)“_kCVPixelBufferPixelFormatTypeKey”中的CvCaptureCAM::setWidthHeight(),引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvCaptureCAM::setWidthHeight() 在 opencv2(cap_avfoundation.o) CvCaptureFile::CvCaptureFile(char const*) in opencv2(cap_avfoundation.o) "_kCVPixelBufferWidthKey", 引用 从: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o) ld 中的 CvCaptureCAM::setWidthHeight():未找到架构 x86_64 的符号

EDIT2:添加 AV 基础框架后留下的错误。

Ld /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL 普通 x86_64 cd "/Users/schuegrafm/Documents/SS15/CooperativeRobots/Double IRL Project/Double_IRL" 导出 IPHONEOS_DEPLOYMENT_TARGET=6.0 导出 PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin: /usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.4.sdk -L/Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Debug-iphonesimulator -F/Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Debug-iphonesimulator -F/Users/schuegrafm/Documents/SS15/CooperativeRobots/Double\ IRL\ Project/Double_IRL/.. -F/Users/schuegrafm/Documents/Programming_Tools/ios -filelist /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL .LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -stdlib=libc++ -mios-simulator-version-min=6.0 -framework AVFoundation -framework opencv2 -framework DoubleControlSDK -framework ExternalAccessory -framework UIKit -framework Foundation -framework CoreGraphics -Xlinker -dependency_info -Xlinker /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/ Double_IRL_dependency_info.dat -o /Users/schuegrafm/Documents/SS15/CooperativeRobots/SDK/DoubleBasicHelloWorld/build/Double_IRL.build/Debug-iphonesimulator/Double_IRL.build/Objects-normal/x86_64/Double_IRL

架构 x86_64 的未定义符号:
“_CMSampleBufferGetImageBuffer”,引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CMSampleBufferInvalidate",引用 从: opencv2(cap_avfoundation.o) "_CMTimeMake" 中的 CvCaptureFile::retrieveFramePixelBuffer(),引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) 在 opencv2(cap_avfoundation.o)
“_CMVideoFormatDescriptionGetPresentationDimensions”,引用自: CvCaptureCAM::getProperty(int) const in opencv2(cap_avfoundation.o) "_CVBufferRelease",引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVBufferRetain",引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferCreateWithBytes", 参考自: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) in opencv2(cap_avfoundation.o) "_CVPixelBufferGetBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetBytesPerRow", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetHeight",引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVPixelBufferGetWidth", 引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferLockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferRelease",引用 从: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) 在 opencv2(cap_avfoundation.o) "_CVPixelBufferUnlockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o) "_kCMTimeZero" 中的 CvCaptureFile::retrieveFramePixelBuffer(),引用自: CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(char const*, int, double, CvSize, int) in opencv2(cap_avfoundation.o)
“_kCVPixelBufferHeightKey”,引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o)“_kCVPixelBufferPixelFormatTypeKey”中的CvCaptureCAM::setWidthHeight(),引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvCaptureCAM::setWidthHeight() 在 opencv2(cap_avfoundation.o) CvCaptureFile::CvCaptureFile(char const*) in opencv2(cap_avfoundation.o) "_kCVPixelBufferWidthKey", 引用 从: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o) ld 中的 CvCaptureCAM::setWidthHeight():未找到架构 x86_64 clang 的符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)

EDIT3:剩余 14 个错误。

架构 x86_64 的未定义符号:“_CVBufferRelease”, 参考自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVBufferRetain",引用自: -[CaptureDelegate captureOutput:didOutputSampleBuffer:fromConnection:] 在 opencv2(cap_avfoundation.o) -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferCreateWithBytes", 参考自: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) in opencv2(cap_avfoundation.o) "_CVPixelBufferGetBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetBytesPerRow", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferGetHeight",引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() in opencv2(cap_avfoundation.o) "_CVPixelBufferGetWidth", 引用 从: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferLockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_CVPixelBufferRelease",引用 从: CvVideoWriter_AVFoundation::writeFrame(_IplImage const*) 在 opencv2(cap_avfoundation.o) "_CVPixelBufferUnlockBaseAddress", 参考自: -[CaptureDelegate updateImage] 在 opencv2(cap_avfoundation.o) CvCaptureFile::retrieveFramePixelBuffer() 在 opencv2(cap_avfoundation.o) "_kCVPixelBufferHeightKey",引用 从: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o)“_kCVPixelBufferPixelFormatTypeKey”中的CvCaptureCAM::setWidthHeight(),引用自: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) CvCaptureCAM::setWidthHeight() 在 opencv2(cap_avfoundation.o) CvCaptureFile::CvCaptureFile(char const*) in opencv2(cap_avfoundation.o) "_kCVPixelBufferWidthKey", 引用 从: CvCaptureCAM::startCaptureDevice(int) 在 opencv2(cap_avfoundation.o) opencv2(cap_avfoundation.o) ld 中的 CvCaptureCAM::setWidthHeight():未找到架构 x86_64 clang 的符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)

【问题讨论】:

  • 为什么不使用可供下载的iOS框架?
  • 可下载文件与脚本构建的框架文件相同。它也只包含头文件。
  • 我遇到的问题是源文件的链接。 opencv网站上的教程中根本没有提到链接。
  • 提供链接器错误。
  • 将 AVFoundation 框架添加到项目中。

标签: ios xcode opencv


【解决方案1】:

在 OpenCV 官方网站上查看适用于 iOS 的 tutorials。您将获得有关依赖项的信息。

【讨论】:

  • 啊,我没有意识到代码中存在实际差异,这真是令人大开眼界。再次感谢您的支持,祝您有美好的一天!
【解决方案2】:

将 OpenCV 3 导入 Xcode 8 项目:

  1. 使用 Cocoapods 安装“OpenCV2”(它说的是“2”,但它仍然是版本 3)。不要安装“开发”版本。

  2. 在为您创建的工作区 Cocoapods 中打开您的项目 - 而不是您创建的项目文件 - 并将每个使用 OpenCV 的实现文件附加到 .mm(相对于 .m)。如果不这样做,您会收到奇怪的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多