【问题标题】:Import headers from c++ library in swift快速从 c++ 库中导入标头
【发布时间】:2022-08-16 21:43:32
【问题描述】:

我正在学习如何在 swift 和 c++ for ios 之间进行通信。作为第一步,我查看了这个示例:

https://github.com/leetal/ios-cmake

我已经设法编译和运行了一个示例应用程序。花了一些时间让它工作。那是一个objective-c项目。

下一步是创建一个新的 swift 项目并尝试导入已编译的库并使用 swift 中的标头。

我没有做到这一点。我认为当前的问题是我不能包含标题HelloWorldIOS.h

import SwiftUI
import HelloWorldIOS.h <- No such module found

struct ContentView: View {
    var body: some View {
        Text(sayHello())
            .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我已尝试按照此处的建议创建一个桥接文件example-Bridging-Header.hhttps://developer.apple.com/documentation/swift/importing-objective-c-into-swift

看起来像:

//
//  example-Bridging-Header.h
//  example-swift
//

#ifndef example_Bridging_Header_h
#define example_Bridging_Header_h

#import \"HelloWorldIOS.h\"

#endif /* example_Bridging_Header_h */

我还在Target - Build Settings - Header Search Paths 中添加了标题的路径

Objective-C Bridging Header 看起来像 example-swift/example-Bridging-Header.h

关于如何从编译的库中调用 c++ 代码有什么好的说明吗?我希望我发现的这个例子很容易开始工作。

    标签: c++ ios swift objective-c bridging-header


    【解决方案1】:

    将 Objective-C 标头导入桥标头时,您不会在 Swift 代码中导入任何内容。之后,默认情况下,导入的标头的所有公共接口都可以在整个 Swift 模块中使用

    【讨论】:

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