写点什么

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

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

关注

评论

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

绍兴市属于哪个省?是几线城市?有正规等保测评机构吗?

行云管家

等保 等级保护 等保测评 绍兴

如何判断线程池任务执行完?

王磊

java面试

Duplicate File Finder Pro for mac(重复文件查找) 7.1.3中文版

mac

苹果mac Duplicate File Finder 查找删除重复文件

TiProxy 尝鲜

TiDB 社区干货传送门

实践案例 6.x 实践

TiDB 优雅关闭

TiDB 社区干货传送门

TiDB 源码解读 6.x 实践

TiDB 源码编译之 PD/TiDB Dashboard 篇

TiDB 社区干货传送门

开发语言 7.x 实践

易点天下KreadoAI正式上架亚马逊云科技Marketplace全球商业化加速落地

新消费日报

合合信息通过ISO/IEC国际标准双认证,为全球用户提供高合规标准AI服务

合合技术团队

人工智能 数据安全 个人信息保护

一种新的告警收敛方式“先知预警”,为您的系统健康护航 | 京东云技术团队

京东科技开发者

系统稳定性 预警监控 企业号 8 月 PK 榜

合合信息与科瑞物业达成合作,数字名片提供企业数智化转型新机遇

合合技术团队

人工智能 合作 数字名片

TiProxy 原理和实现

TiDB 社区干货传送门

新版本/特性发布 TiDB 源码解读 6.x 实践 TiKV 源码解读

入门级教程:使用Flask进行Python Web开发

Apifox

flask 后端 web开发 Python编程 Python Web框架

【PCSD考试笔记】

TiDB 社区干货传送门

TiDB 底层架构

【SOP】最佳实践之 TiDB 业务写变慢分析

TiDB 社区干货传送门

性能调优 管理与运维 故障排查/诊断 应用适配

MobPush iOS SDK iOS实时活动

MobTech袤博科技

ios 消息推送 sdk

JDK1.6在生产环境引起的坑

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

SpringCloud-Hystrix服务熔断与降级工作原理&源码 | 京东物流技术团队

京东科技开发者

SpringCloud Hystrix 熔断降级 企业号 8 月 PK 榜

如何在数据库迁移中保证数据一致性?

java易二三

MySQL 数据库 编程 计算机

火山引擎DataLeap:更强数据目录搜索能力,做到一步找数

字节跳动数据平台

大数据 数据中台 数据研发 企业号 8 月 PK 榜

TiDB 多集群告警监控-初章-监控融合、自动告警处理

TiDB 社区干货传送门

监控 实践案例 集群管理

ChatGPT 助力开发人员改进代码的5个方式

SEAL安全

开发者 ChatGPT 企业号 8 月 PK 榜

物理机是什么?有什么优势?可以上堡垒机吗?

行云管家

等保 堡垒机 等级保护 物理机

创新赛制,顶尖赛题!| 2023第二届粤港澳大湾区(黄埔)国际算法算例大赛十赛道虚位以待!

ModelWhale

人工智能 深度学习 数据竞赛 琶洲 粤港澳大湾区

BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

TiDB 社区干货传送门

开发语言 性能测评 应用适配 数据库连接

数据库内核之Binder

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne 超融合数据库

从生态的角度看容器和虚拟化的区别

品高云计算

如何规划税务数智化建设

用友BIP

税务管理

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

京东科技开发者

spring 注解 源码解析 企业号 8 月 PK 榜 @ControllerAdvice

华秋亮相2023世界汽车制造技术暨智能装备博览会,推动汽车产业快速发展

华秋电子

通过docker安装单机版minio简单测试br通过s3存储备份恢复数据

TiDB 社区干货传送门

备份 & 恢复

命令行非明文密码连接 TiDB

TiDB 社区干货传送门

实践案例 集群管理 数据库连接

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