我正在尝试将C ++代码(fuzzylite.com)集成到Swift框架项目中,并且我一直收到构建错误。据我所知,您不能在Swift框架项目中使用桥接头,而是需要在Umbrella头中包含源代码。我将C ++代码包装在Objective-C类中,然后将伞形头中的Objective-C头包含在内:
#import <Fuzzylite/ObjCWrapper.h>
遵循这里提到的所有步骤(Clarification on adding Objective C code to a swift dynamic framework),但它并没有真正起作用,因为它无法找到Objective-C包装的C ++框架。任何帮助都非常感谢!
答案 0 :(得分:1)
通过执行以下操作解决了这个问题:
为C ++项目创建了C头文件包装器,如下所示:
#ifndef Header_h
#define Header_h
#ifdef __cplusplus
extern "C" {
#endif
void hello(char *str);
#ifdef __cplusplus
}
#endif
#endif /* Header_h */
在框架项目的Umbrella头文件中(在我的例子中,Umbrella头文件的名称是'TestSDK.h')(请记住,因为这是一个框架目标,所以没有涉及桥接头在构建应用程序的情况下,我把以下内容。:
#ifdef __cplusplus
#import "fuzzylite/fl/Headers.h"
#endif
添加-I /到XCode-&gt; Target-&gt; Build Settings-&gt; Other C Flags。就我而言,路径是:
-I$(PROJECT_DIR)/TestSDK/fuzzylite/
这对我有用。如果没有第5步,我就会遇到路径包含错误。