macOS13+Xcode14编译Apple Silicon虚拟机项目遇VZMacKeyboardConfiguration报错
问题描述
按照苹果开发者文档《Running macOS in a virtual machine on Apple silicon》指引操作,下载解压示例项目后在Xcode14(macOS13环境)中打开,使用个人Apple开发者签名配置编译时出现错误:
MacOSVirtualMachineConfigurationHelper.m:84:18 Use of undeclared identifier 'VZMacKeyboardConfiguration'
涉及代码片段:
+ (VZKeyboardConfiguration *)createKeyboardConfiguration { if (@available(macOS 14.0, *)) { return [[VZMacKeyboardConfiguration alloc] init]; } else { return [[VZUSBKeyboardConfiguration alloc] init]; } }
已知VZMacKeyboardConfiguration是macOS14+和Xcode15+才支持的接口,当前环境为macOS13 + Xcode14,询问能否完成编译。
解决方案
可以在当前环境下完成编译,只需修改涉及VZMacKeyboardConfiguration的代码即可——Xcode14的SDK中未包含该类定义,即便有版本判断也会触发编译错误。推荐两种修改方式:
方式一:直接保留兼容分支
移除针对macOS14的代码分支,仅保留适配macOS13的实现:+ (VZKeyboardConfiguration *)createKeyboardConfiguration { return [[VZUSBKeyboardConfiguration alloc] init]; }方式二:保留版本判断结构(需添加前置声明)
给VZMacKeyboardConfiguration添加类前置声明,避免编译报错,运行时依然会根据系统版本走对应分支:@class VZMacKeyboardConfiguration; + (VZKeyboardConfiguration *)createKeyboardConfiguration { if (@available(macOS 14.0, *)) { return [[VZMacKeyboardConfiguration alloc] init]; } else { return [[VZUSBKeyboardConfiguration alloc] init]; } }
内容的提问来源于stack exchange,提问作者Nick Bolton
相关产品推荐
相关产品推荐

