You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:01:07