将 AudioKit iOS 应用程序移植到 Catalyst macOS 应用程序时出现编译错误
compilation error when porting AudioKit iOS app to Catalyst macOS app
我有一个 iOS 应用程序,它在 AudioKit 的 iOS 构建中运行良好。我想尝试通过放入 AudioKit.xcframework 来移植到 macOS w Catalyst。这是我做的
- 从源代码编译 AudioKit-4.9.5 以生成 AudioKit.xcframework(我之前一直使用来自同一源代码版本的本地编译的 AudioKit iOS 框架,在非 Catalyst 版本上没有问题)
- 在 "General" 选项卡中,
- 选中 Mac 作为部署目标
- 删除了旧的 AudioKit iOS 框架
- 已添加AudioKit.xcframework
- 在 "Build Settings" 选项卡中,
- 将"Framework Search Paths"从AudioKitiOS框架的父目录更改为AudioKit.xcframework
的父目录
- 在 "Build Phases" 选项卡中,
- AudioKit.xcframework 出现在 "Link Binary with Libraries"
- AudioKit.xcframework 出现在 "Embed Frameworks"
我收到以下错误,
目前正在使用 Xcode 11.4.1。
在这里回答我自己的问题,因为这个问题似乎是包含 AudioKit 的 AudioKit 模块的产物 class。将 AudioKit class 重命名为其他名称可解决此问题,但我不鼓励人们这样做,而是等待未来的 AudioKit 版本会这样做。
我遇到了完全相同的问题。我最终编辑了 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.output
和 AudioKit.midi.client
代替未解析的标识符。
如果您使用 AKSampler,请删除以下行:
@objc override dynamic public init()
来自 @objc open class AKSampler : AKPolyphonicNode, AKComponent {
部分。
我有一个 iOS 应用程序,它在 AudioKit 的 iOS 构建中运行良好。我想尝试通过放入 AudioKit.xcframework 来移植到 macOS w Catalyst。这是我做的
- 从源代码编译 AudioKit-4.9.5 以生成 AudioKit.xcframework(我之前一直使用来自同一源代码版本的本地编译的 AudioKit iOS 框架,在非 Catalyst 版本上没有问题)
- 在 "General" 选项卡中,
- 选中 Mac 作为部署目标
- 删除了旧的 AudioKit iOS 框架
- 已添加AudioKit.xcframework
- 在 "Build Settings" 选项卡中,
- 将"Framework Search Paths"从AudioKitiOS框架的父目录更改为AudioKit.xcframework 的父目录
- 在 "Build Phases" 选项卡中,
- AudioKit.xcframework 出现在 "Link Binary with Libraries"
- AudioKit.xcframework 出现在 "Embed Frameworks"
我收到以下错误,
目前正在使用 Xcode 11.4.1。
在这里回答我自己的问题,因为这个问题似乎是包含 AudioKit 的 AudioKit 模块的产物 class。将 AudioKit class 重命名为其他名称可解决此问题,但我不鼓励人们这样做,而是等待未来的 AudioKit 版本会这样做。
我遇到了完全相同的问题。我最终编辑了 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.output
和 AudioKit.midi.client
代替未解析的标识符。
如果您使用 AKSampler,请删除以下行:
@objc override dynamic public init()
来自 @objc open class AKSampler : AKPolyphonicNode, AKComponent {
部分。