写点什么

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

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

关注

评论

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

“特斯拉式”创新,被这家科技卫浴品牌极致演绎

Alter

Java 如何确保 JS 不被缓存

威哥爱编程

js Java’

开源向量数据库性能对比: Milvus, Chroma, Qdrant

Zilliz

性能测试 Milvus 向量数据库 Chroma qdrant

飞码LowCode前端技术(七)

京东科技开发者

飞码LowCode前端技术(六)

京东科技开发者

按图搜索的智能化:拍立淘API返回值的算法解析

技术冰糖葫芦

API Explorer API 文档 API 测试 API 性能测试

数字身份管理建设是传统社会向数字社会演进的核心关键

芯盾时代

数字身份 身份安全

计算不停歇,百度沧海数据湖存储加速方案 2.0 设计和实践

Baidu AICLOUD

大数据 hdfs 数据湖 对象存储

冲击美团!已成功 OC

王中阳Go

Go 面试 后端

基智科技CEO张文战:探索火山引擎数据飞轮模式下的大模型应用新机会

字节跳动数据平台

大数据 大模型

人工智能 | 阿里通义千问大模型

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

测试

研发效能中的黄金三角与瓶颈突围

思码逸研发效能

研发效能 绩效 绩效管理 效能度量 绩效分析

人工智能 | 阿里通义千问大模型

测试人

人工智能 软件测试

【CST教程】如何在CST中设置自由边界

思茂信息

cst 电磁仿真 边界条件

飞码LowCode前端技术(五)

京东科技开发者

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布

sysin

macos windows esxi OEM 2.7

VMware Cloud Director 10.6 发布,新增功能概览

sysin

vmware Cloud Director

VMware ESXi 8.0U3 HPE (慧与) 定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

macos windows esxi OEM 2.7

情绪稳定!别再让Git合并冲突影响你工作了

禅道项目管理

程序员 代码管理 git 学习 Git Commit git push

2025云堡垒机公司就选行云绽放!

行云管家

云计算 网络安全 云堡垒机

5gWiFi IPQ6010 vs. IPQ5010 Battle of the WiFi 6 Titans:  - Which One Should You Choose?

wifi6-yiyi

5G wifi

【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(3)

HarmonyOS SDK

HarmonyOS

测试热招职位技能要求拆解公开课 —— 开启你的软件测试进阶之路

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

测试

捷途山海 T2—— 安全堡垒,护航人生

科技热闻

Swap丨DAPP开发:兑换交易所质押项目LP分红系统

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

VMware Aria Operations 8.18 发布,新增功能概览

sysin

vmware aria Operations

CAE教程:HyperMesh概述与有限元分析简介

智造软件

仿真 hyperworks 有限元

商品详情数据API接口详解与数据应用参考

代码忍者

pinduoduo API API 性能测试

儋州市等保测评机构有哪些?在哪里?

行云管家

等保 等保测评机构 澶州

喜讯|麦杰科技入选首批《上海市重点产业和领域数字化产品和解决方案推荐目录》

麦杰研究院

研发数据要不要跟绩效考核挂钩?

思码逸研发效能

DevOps 研发效能 绩效管理 研发效能度量

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