写点什么

在 Visual Studio 中将 Objective-C 编译为 C++

  • 2015-05-08
  • 本文字数:1138 字

    阅读完需:约 4 分钟

曾有人谣传微软 Windows 10 平台将支持运行 Android 程序,没有人会预料到 iOS 应用也将得到同样的支持。目前,微软正结合 C2 和 Clang 使之变为可能。

编译器支持

谷歌和苹果都使用 Clang 作为他们的 C++ 前端,微软将 Clang 与 Visual C++ 编译器的后端 C2 结合,以此来支持在 Windows 上运行 Android 和 iOS 程序。

苹果的 Objective-C 同样使用 Clang 作为前端,所以一旦 Clang 与 C2 整合完成,他们也将获得解析并编译 Objective-C 的能力。

IDE 支持

Visual Studio 中的 Objective-C 支持语法高亮、代码补全、和代码调试功能。C++ 和 C#文件可以被引入到相同的项目中,允许程序直接跨边界调用。编译器将处理所有封送工作,所以开发者只会看到普通的函数调用。

大多数 Objective-C 项目都以建立 XCode 项目开始,所以 Visual Studio 将支持导入 XCode 项目,VS 和 XCode 项目文件可在混合模式项目中共存,因此可以在两种 IDE 中同时开发这个项目。

混合模式项目

Windows 为 Objective-C 应用提供了新的 API,例如:动态磁贴。为了确保可以继续在平台间共享代码,微软允许你在调用 Windows API 前通过运行时检查它们是否可用。或者, 你可以使用预处理器指令显式地隔离平台特定代码与共享代码。

运行时行为

Windows 的 Objective-C 运行时默认通过检测应用原始平台来决定具体行为。举个例子:如果你移植某个 iPhone 应用,那么它将默认运行在一个小窗口中,而从 iPad 移植的应用将默认运行在常规大小的窗口中。

所有这样的行为可以在需要时被应用覆盖。

iOS API 兼容性

Windows 10 支持 iOS API 的一个“合理子集”,它不会对应于 iOS 的某个版本,而是通过查看指标来寻找最常用的 API。在第一个版本中,微软将关注以下 API:

  • 游戏:对 OpenGL、OpenAL 和传感器提供良好的支持
  • UI:UIKit、核心动画、核心图形、核心文字、触控
  • Objective-C:自动引用计数、代码块、Foundation 框架

对于像分享、消息提示、存储组件这样的功能,开发者需要选择是继续使用 iOS API,还是切换到 Windows 替代解决方案。如果你选择继续使用 iOS API,Windows 将提供一个兼容层来支持 API 正常运行;当然,微软更希望你使用他们提供的解决方案,这样你就可以访问高级 Windows 特性。

Swift

对于 Swift,微软官方的立场是“暂不评论”。而在私下交流中,他们透露出支持 Swift 的意愿,但由于要在秋天到来前忙于准备 Objective-C,以致于没有资源可以提供给 Swift。

查看英文原文: Compiling Objective-C into C++ with Visual Studio


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-05-08 02:433467
用户头像

发布了 63 篇内容, 共 137.3 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

内网部署数据本地化,不限时的视频会议软件-BeeWorks Meet

BeeWorks

即时通讯 IM 私有化部署

“数字创新产品课程” 11月8-9日 · CSPO认证在线课程【和A-CSPO打包报名享特惠】

ShineScrum

敏捷 产品负责人 CSPO认证 CSPO

硅谷顶级 VC 如何看语音 AI?Greylock 合伙人揭秘 Voice Agent 构建的三层策略

RTE开发者社区

2025年值得关注的五个海外内容平台趋势

Wolink

海外营销推广 沃链Wolink 达人营销

Java包装类:你需要掌握的核心要点

码界行者

Java 包装类型

七年,从 TB 到 PB:TiDB 助力马上消费金融核心系统演进

TiDB 社区干货传送门

「高频必考」Docker&K8S面试题和答案

王中阳Go

Docker k8s

聊聊Deepseek V3.1的极你太美

冯骐

AI 模型训练 大模型 DeepSeek DeepSeekV3.1

AI 网关代理 RAG 检索:Dify 轻松对接外部知识库的新实践

阿里巴巴云原生

阿里云 云原生 AI网关

智能平权下,燃油车如何升级?

脑洞汽车

AI

“全球金牌敏捷课程” · 10月25-26日CSM认证课程 · Jim老师引导团队Agility与企业Agility话题

ShineScrum

敏捷 CSM认证 CSM认证培训

哇塞!AI编程神器Kiro,免排队畅用真Claude模型!

王磊

Claude Code 官方内部团队最佳实践!

Immerse

案例实践 | 如何做好 Apache Pulsar 的运维?ASP 产品简介

AscentStream

消息队列

转化率始终上不去?用户行为分析来帮你

ClkLog

开源 数据分析 埋点 用户行为分析 用户画像

来自火山引擎的 MCP 安全授权新范式

火山引擎开发者社区

火山引擎 MCP

汽车之家携手 TiDB:业务增长20+倍,一套 HTAP 数据库的规模化实践

TiDB 社区干货传送门

9 月 13 日,TiDB 社区活动在西安!助力民生领域数据架构升级和业务效能提升,一起探讨 TiDB 在智慧城市、智能制造(半导体)、疾控、生活服务等行业的实践分享!

TiDB 社区干货传送门

具身智能评估新思路:智源评测FlagEval基于2025世界人形机器人运动会足球赛的初步探索

智源研究院

人工智能 具身智能

写作格式一键复刻!Fabarta个人专属智能体自定义模板新功能介绍

Fabarta

人工智能 个人专属智能体

小红书笔记评论API数据解析(附代码)

tbapi

小红书API 小红书笔记评论接口 小红书笔记评论采集 小红书笔记评论api

出海品牌传播为什么需要与海外舆情监测系统联动?

沃观Wovision

出海企业 沃观Wovision 海外舆情监测

别让旧系统拖垮未来!新一代数字化底座:业务增长的“新引擎”

BeeWorks

即时通讯 IM 私有化部署

平凯数据库(TiDB 企业版)敏捷模式内测开启!报名即可获得 6 个月的企业版使用权限 & 领取考试课程券和积分奖励,Top 10 测试报告撰写者还可以获得 TiDB 社区定制款行李箱!

TiDB 社区干货传送门

TEM on 腾讯云 开箱即用的完美体验

TiDB 社区干货传送门

TEM 试用

抖音基于Flink的DataOps能力实践

Apache Flink

大数据 flink 实时计算

别再猜了!用数据揭穿平凯数据库(TiDB 企业版)敏捷模式和MySQL的性能对比真相!

TiDB 社区干货传送门

版本测评 性能测评 敏捷模式 TEM 试用

“敏捷产品管理精进课程” 12月6-7日 · A-CSPO认证 · 上海线下【提前报名特惠】

ShineScrum

CSPO认证 敏捷认证

区块链Web3项目的需求分析

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

TiDB 在智能制造与能源领域:以先进架构解决痛点,支撑多场景创新与发展

TiDB 社区干货传送门

在Visual Studio中将Objective-C编译为C++_Android/iOS_Jonathan Allen_InfoQ精选文章