尝试使用XCode将C ++代码集成到Swift框架项目中 - 失败

时间:2016-04-18 22:50:48

标签: c++ objective-c xcode swift frameworks

我正在尝试将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 ++框架。任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:1)

通过执行以下操作解决了这个问题:

  1. 将C ++源目录添加到XCode项目
  2. 将C函数包装器公开给C ++实例方法
  3. 为C ++项目创建了C头文件包装器,如下所示:

    #ifndef Header_h
    #define Header_h
    #ifdef __cplusplus
    extern "C" {
    #endif
    void hello(char *str);  
    #ifdef __cplusplus
    }
    #endif
    #endif /* Header_h */
    
  4. 在框架项目的Umbrella头文件中(在我的例子中,Umbrella头文件的名称是'TestSDK.h')(请记住,因为这是一个框架目标,所以没有涉及桥接头在构建应用程序的情况下,我把以下内容。:

    #ifdef __cplusplus
    #import "fuzzylite/fl/Headers.h"
    #endif
    
  5. 添加-I /到XCode-&gt; Target-&gt; Build Settings-&gt; Other C Flags。就我而言,路径是:

    -I$(PROJECT_DIR)/TestSDK/fuzzylite/
    
  6. 这对我有用。如果没有第5步,我就会遇到路径包含错误。