【问题标题】:compilation error when porting AudioKit iOS app to Catalyst macOS app将 AudioKit iOS 应用程序移植到 Catalyst macOS 应用程序时出现编译错误
【发布时间】:2020-08-02 02:29:57
【问题描述】:

我有一个 iOS 应用程序在 AudioKit 的 iOS 版本中运行良好。我想尝试通过加入 AudioKit.xcframework 来移植到 macOS w Catalyst。这就是我所做的

  1. 从源代码编译 AudioKit-4.9.5 以生成 AudioKit.xcframework(我之前一直使用本地编译的同一源代码版本的 AudioKit iOS 框架,在非 Catalyst 版本上没有问题)
  2. 在“常规”选项卡中,
    • 已选中 Mac 作为部署目标
    • 删除了旧的 AudioKit iOS 框架
    • 添加了 AudioKit.xcframework
  3. 在“构建设置”选项卡中,
    • 将“Framework Search Paths”从AudioKit iOS框架的父目录更改为AudioKit.xcframework的父目录
  4. 在“构建阶段”选项卡中,
    • AudioKit.xcframework 出现在“Link Binary with Libraries”中
    • AudioKit.xcframework 出现在“嵌入框架”中

我收到以下错误,

当前使用 Xcode 11.4.1。

【问题讨论】:

    标签: audiokit xcframework


    【解决方案1】:

    在这里回答我自己的问题,因为这个问题似乎是包含 AudioKit 类的 AudioKit 模块的产物。将 AudioKit 类重命名为其他东西可以解决这个问题,尽管我不鼓励人们这样做,而是等待未来的 AudioKit 版本执行此操作。

    【讨论】:

      【解决方案2】:

      我遇到了完全相同的问题。我最终编辑了x86_64-apple-ios-macabi.swiftinterface 文件并手动更正了界面。

      我只需要在未解析的标识符中添加 AudioKit. 前缀。它看起来更像是 XCFramework 构建配置/swiftinterface 生成器的错误。

      我在使用AKSampler() 时也遇到了运行时崩溃。由于某种原因,编译器不明白.init() 不存在,它应该使用AKSampler(masterVolume: 1.0, pitchBend: 0.0, ... filterEnvelopeVelocityScaling: 0.0) 原型。使用默认值手动调用修复它。

      编辑:您不需要显式调用长初始化器,您只需删除该行:

      
        @objc override dynamic public init()
      

      来自@objc open class AKSampler : AKPolyphonicNode, AKComponent { 部分。


      总结一下: 在 XCFramework/ 中编辑 x86_64-apple-ios-macabi.swiftinterface AudioKit.outputAudioKit.midi.client 代替未解析的标识符。

      如果您使用 AKSampler,请删除该行:

        @objc override dynamic public init()
      

      来自@objc open class AKSampler : AKPolyphonicNode, AKComponent { 部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        相关资源
        最近更新 更多