写点什么

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

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

关注

评论

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

ApacheCon Asia 2022 精彩回顾 | 如何让更多人从大数据中获益?

白鲸开源

Java培训学生可以学到哪些开发技术呢

小谷哥

阿里巴巴“高并发”天花板教程《基础+实战+源码+面试+架构》

程序知音

Java 高并发 阿里 多线程与高并发 java架构

信用卡市场发展洞察:浦大喜奔APP探索大零售融合经营体系

易观分析

金融 银行 信用卡

过等保是浪费钱吗?一定要过等保吗?

行云管家

等级保护 过等保 等保2.0

人工智能、机器学习与深度学习的区别在哪里?

Finovy Cloud

人工智能 深度学习

企业上云安全感多“亿”点!

天翼云开发者社区

是什么引起数据库响应超时?

BUG侦探

MySQL AWS 云服务

Databend JSON 复杂数据类型的设计与使用 | Databend 特性系列

Databend

json

自学Java和java培训哪个好就业

小谷哥

参加Java培训能学到开发技术吗?

小谷哥

计算机网络——数据链路层

StackOverflow

编程 计算机网络 9月月更

银河麒麟、中标麒麟学习实操资料汇总(含V4、V7、V10)

墨天轮

操作系统 国产化 银河麒麟 中标麒麟

融云云盘,不止于存储

融云 RongCloud

云盘 云存储

常见堡垒机小知识汇总-行云管家

行云管家

安全 IT 堡垒机 IT运维

数据湖管理及优化

阿里云大数据AI技术

大数据 spark 数据湖 企业号九月金秋榜

Java进阶(二十八)SimpleDateFormat格式化日期问题

No Silver Bullet

Java 9月月更

限时开源!阿里P8架构师手写Spring全家桶核心知识学习笔记

了不起的程序猿

Java spring 编程 程序员 Spring全家桶

QA如何高效参与技术设计评审

转转技术团队

质量管理 测试 技术设计质量把控

年轻一代程序员:社牛、不卷、玩开源

腾源会

开源 腾源会

测试人生 | 从外行到外包,从手工测试到知名互联大厂测开 这个90后小姐姐是怎么腾飞的?

霍格沃兹测试开发学社

Wallys /QCA9880 vs QCA9882/802.11ac Solution/MU-MIMO

wallys-wifi6

QCA9880 QCA9882

天翼云安全一体化纵深体系是怎么炼成的?

天翼云开发者社区

云安全

CentOS时代即将结束 国产系统能否避免“受限”覆辙?

天翼云开发者社区

天翼云全场景业务无缝替换至国产原生操作系统CTyunOS!

天翼云开发者社区

系统

100+大屏模板免费领!葡萄城BI行业应用方案重磅发布!

葡萄城技术团队

BI 发布会

工赋开发者社区 | 从零开始的新跨平台浏览器:Ladybird 正式起飞

工赋开发者社区

易观千帆 | 2022年7月银行APP活跃用户规模盘点:江浙沪城商行表现亮眼

易观分析

App 金融 银行

JAVA开发培训哪家比较好

小谷哥

如何选择靠谱的西安培训机构?

小谷哥

会当“零”绝顶!天翼云零信任产品利刃出鞘

天翼云开发者社区

安全

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