写点什么

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

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

关注

评论

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

安全保护策略:iOS应用程序代码保护的关键步骤和技巧

任正非“苹果是华为的老师”;音频编解码标准 L2HC 发布;GNU 和自由软件运动四十周年丨RTE开发者日报 Vol.53

声网

C++中的四种类型转换运算符

芯动大师

C语言

最佳实践:TiDB 业务写变慢分析处理

PingCAP

数据库 最佳实践 TiDB

数字货币合约交易平台开发,合约社区智能跟单平台

V\TG【ch3nguang】

infoQ 迁移开始

愤毛阿青

现货合约量化交易机器人模式开发搭建

V\TG【ch3nguang】

数字货币交易所开发定制搭建功能列表

V\TG【ch3nguang】

怎么使用cpu调用SDK进行开发?

矩视智能

机器视觉

WorkPlus局域网即时通信软件,打造高效协作的智能选择

WorkPlus

在信创化的浪潮下,银行应该如何选择

Onegun

信创 信创生态

独享http代理与普通http代理相比,独享贵的因素有哪些?

巨量HTTP

代理IP http代理

如何用人工智能加速研发进程

爱吃小舅的鱼

人工智能 AI 研发管理

时序数据库 IoTDB 发布端边云原生解决方案,有效优化工业互联网数据上传时效与资源消耗

Apache IoTDB

软件需求文档、设计文档、开发文档、运维文档大全

金陵老街

项目管理 #运维

集成开发环境软件Eclipse与MyEclipse区别

小齐写代码

用户案例|Shopee 在多媒体理解业务的向量检索系统实践

Zilliz

非结构化数据 Milvus Shopee Zilliz 向量数据库

科兴未来 | 中国·仙居第六届全球医疗器械创业创新大赛

科兴未来News

企业数据安全重要?私有化部署IM,保障信息安全无忧虑!

WorkPlus

WorkPlus打造智慧企业移动门户,开启高效办公新时代

WorkPlus

金融业需要的大模型,是一个系统化工程

脑极体

大模型

专访中欧财富伍春兰:财富管理行业数字化转型升级,数据库如何选型?

PingCAP

数据库 TiDB

静态分析在DevSecOps中的应用

Tom(⊙o⊙)

ARB链合约项目DAPP系统逻辑开发技术

V\TG【ch3nguang】

项目流程管理处理推荐 OmniPlan Pro 4 最新激活中文

胖墩儿不胖y

Mac软件 项目流程管理

豆瓣评分9.6!Mybatis技术原理实战

程序员万金游

mybatis #java #Spring #后端

重装亮相!9 月 22 日平凯数据库 - TiDB 企业版全解读等你来!

PingCAP

数据库 TiDB 平凯星辰 平凯数据库

强大硬件+优化软件,英特尔锐炫助力玩家沉浸畅享《猛兽派对》

E科讯

好物周刊#2:AI 写作助手

村雨遥

软件 网站 项目 插件 资料

Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能

凌览

node.js puppeteer 截图

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