Xcode 7不使用c框架构建项目
我无法使用新版本的opencv 3.0.0框架构建项目(版本2没有此问题).
Xcode 7不会将c源编译为c. 这是最简单的设置: >从这里下载3.0.0框架http://netix.dl.sourceforge.net/project/opencvlibrary/opencv-ios/3.0.0/opencv2.framework.zip 这是设置: >构建. 以下是编译器所说的内容: opencv2.framework/Headers/core/base.hpp:49:4: error: base.hpp header must be compiled as C++ 这是为什么?我有.mm文件,它应该作为Objective-C源编译. 解决方法
openCV import语句位于Objective-C头文件中,因此暴露给Swift.它应该在实现文件xxx.mm中,这是从Swift隐藏的.如果你移动它,你会发现你的项目编译.
Swift可以桥接到Objective-C,但如果向它公开C代码,它将失败.您的Objective-C类应该被视为Swift项目和openCV的C接口之间的包装器接口. Objective-C可以同时使用.从Swift中,您可以调用Objective-C方法,而这些方法又可以在xxx.mm实现中使用openCV函数. 这不是openCV2与openCV3的问题. 更新 Grigory指出特定的OpenCV标头是纯Objective-C – 它是openCV的iOS视频接口,因此它应该可以工作.我的设置不正确,因为我的桥接标头是空的.添加#import“CVWrapper.h”确实打破了构建. 该问题是由openCV标头引起的. cap_ios.h不是纯粹的Objective-C:它导入一个C文件: #include "opencv2/core.hpp" 如果C编译不可用,则该文件被设置为抛出错误 #ifndef __cplusplus # error core.hpp header must be compiled as C++ #endif 由于你无法控制框架,我无论如何都会采取隐藏我自己的包装器后面的所有标头的方法:不能保证任何openCV头文件都将被屏蔽.我假设你想要一个更复杂的包装器来从Swift端访问openCV函数. 这是方法I have elaborated elsewhere,具有small sample project using openCV and Swift. 更新 在与格里戈里进行一些讨论后,他同意:
包装规则!在某些情况下看起来有点矫枉过正,但它通常可以帮你省去麻烦.这在混合Objective-C和C时已经是很好的建议,但在与Swift接口时成为必需. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |