大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

OPPO大数据离线计算平台架构演进

安第斯智能云

大数据 spark YARN

区块链数字藏品平台开发助力潮玩行业新发展

电微13828808271

恒源云(GPUSHARE)_云GPU服务器如何使用OpenCV?

恒源云

OpenCV 计算机视觉 图像识别

【年度评选】让我们为2021留下浓墨重彩的一笔

InfoQ写作社区官方

2021年度评选 热门活动

1300亿次!百度地图发布生态全景3.0 日均位置服务请求次数再创新高

百度开发者中心

人工智能

公安合成作战指挥中心平台建设方案,情指勤一体化系统开发建设

a13823115807

公安合成作战系统开发 情指勤一体化合成作战系统

盘点 2021|学习、分享、努力中成长

小隐乐乐

盘点2021

今年读了多少书?(22/28)

赵新龙

28天写作

【AI最前线】精准优质-资讯|分享|热议第45期

百度大脑

人工智能「

优秀程序员的30种思维--理解认知篇

hackstoic

程序员 架构思维

公安大数据合成作战平台建设,合成作战指挥中心平台开发

电微13828808271

CRM系统如何帮助企业改进销售流程

低代码小观

低代码 销售管理 CRM 无代码 CRM系统

【CSS 学习总结】第二篇 - HTML 扩展简介

Brave

CSS 12月日更

盘点 2021|代码之外:人生最大的幸运就是努力没有白费 -- 我的2021年度总结

宇宙之一粟

职场成长 生活记录 12月日更 盘点2021 代码之外

toB企业的客户续约提醒

明道云

三步开启你的网络服务全球动态加速之旅

声网

网络 人工智能「

CSS之变量(三)心形加载条

Augus

CSS 12月日更

《谈谈人生选择的思考逻辑》读后感

Changing Lin

12月日更

作业三

施正威

如何突破浏览器12px限制

云小梦

CSS JavaScript html Vue transform

【等保小知识】等保一级二级三级哪个要求更高?

行云管家

网络安全 等保 等级保护 等保20

详解 Rainbond Ingress 泛解析域名机制

北京好雨科技有限公司

手把手教你配置php的redis扩展

恒生LIGHT云社区

php redis php扩展

52 K8S之Harbor项目

穿过生命散发芬芳

k8s 28天写作 12月日更

百度王海峰:深耕自然语言处理近30年,推进AI融合创新

百度大脑

人工智能

公安重点人员动态预警管控系统建设,警务情指一体可视化决策系统

电微13828808271

重启iptables为啥内核参数不对了?

BUG侦探

Linux iptables

DongTai 社区双周报 | v1.1.4 版本新功能解析来啦!

火线安全

云脑启智 开源赋能 | 2021新一代人工智能院士高峰论坛暨启智开发者大会顺利举办

OpenI启智社区

人工智能 院士峰会 启智社区

Spring Boot开发,有这个包就够了!

sleeper

Java DevOps springboot 框架

20个提升效率的JS简写技巧

CRMEB

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