【ArchSummit架构师峰会】基于大模型的基础框架、中台、应用层等专题全覆盖 >>> 了解详情
写点什么

在 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:432818
用户头像

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

关注

评论

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

华为产品创新经验,帮你成为更好的产品创新者

平平无奇爱好科技

C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南

小万哥

程序人生 编程语言 软件工程 C/C++ 后端开发

2024上海城博会|上海国际城市与建筑博览会

AIOTE智博会

城博会 上海城博会

Spring 应用合并之路(二):峰回路转,柳暗花明 | 京东云技术团队

京东科技开发者

牛刀低代码开发实战—在线报工管理

牛刀专业低代码

低代码 专业低代码 起步牛刀低代码 牛刀低代码 牛刀专业低代码

Excelize入选“2023开源创新榜”优秀开源项目

xuri

GitHub 开源 Excel 创新 Excelize

速卖通商品详情数据接口(aliexpress.item_get)丨速卖通API接口

tbapi

速卖通商品详情数据接口 速卖通API接口 速卖通商品数据接口 速卖通商品列表数据接口

需方管理运维运营服务的一些心得

太乙闲人

展望2024: 中国AI算力能否引爆高性能计算和大模型训练的新革命?

蓝海大脑GPU

《2023央国企数字化产业赋能图谱》正式发布!(内附下载)

信通院IOMM数字化转型团队

ICT深度观察 央国企数字化转型 央国企数字化产业赋能图谱

在 Walrus 上轻松集成 OpenTofu

SEAL安全

开源 IaC Walrus OpenTofu

软件测试/测试开发/全日制 | 数据库设计与Python全栈开发的默契合作

测吧(北京)科技有限公司

测试

青否AI交互式数字员工正式上岗!

青否数字人

数字人

Calendar 366 II for Mac日历软件 最新版下载安装

南屿

Mac日历软件 菜单栏日历提醒工具 Calendar 366 II mac版 Calendar 366 II 下载

极狐GitLab Helm Registry 使用指南

极狐GitLab

Git 对项目更新的时候提示错误 repository not owned by current user

HoneyMoose

当创建一个ingress后,kubernetes会发什么?

华为云开发者联盟

云原生 后端 HTTP 华为云 华为云开发者联盟

文心一言 VS 讯飞星火 VS chatgpt (172)-- 算法导论13.3 1题

福大大架构师每日一题

福大大架构师每日一题

天谋科技联合 OpenCloudOS 完成技术兼容互认证

Apache IoTDB

说个大事:问界M9来了!

平平无奇爱好科技

Authing 受邀参加 2023 QCon 全球软件开发大会

Authing

InfoQ Qcon Authing

重磅发布《政务数据云发展与应用白皮书(2023)》(附下载)

信通院IOMM数字化转型团队

政务 政务数据安全 ICT深度观察 政务数据云

好用的思维导图软件MindNode for mac中文版 支持mac14系统

南屿

Mac软件 MindNode破解版下载 思维导图软件MindNode

【第七在线】智能商品系统是否可以帮助预测新品的销售表现?

第七在线

求解算力“致用”难题,中国算力行业给出首个答案

脑极体

AI

好消息!时习知荣获IXDC AWARD国际体验奖

平平无奇爱好科技

IPQ8072 with QCN9024 QCN9074|Does DR8072 platform support DR9074-Triband Card?

wallyslilly

IPQ8072 QCN9024

Super Speed vs. Wireless: A detailed comparison of QCN9274 and QCA9880 wireless network card chips

wallysSK

零代码集成自动化的实现逻辑是什么?

RestCloud

零代码 APPlink

牛刀专业低代码平台开发实战—智能电房

牛刀专业低代码

低代码 起步牛刀低代码 牛刀低代码 牛刀专业低代码 起步低代码

K-最近邻算法(KNN)是什么法?

小齐写代码

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