AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

ABCNet:端到端的可训练框架的原理应用及优势对比

合合技术团队

人工智能 模型 端口 图片识别 文本识别

低代码平台适用于大中型企业吗?

力软低代码开发平台

解决前端恶意代码侵入的一些思考

FinFish

小程序 安全 安全架构 小程序容器 前端安全

Wallys Routerboard DR40x9 IPQ4019 IPQ4029 ,802.11AC 2x2 2.4G&5G Support HTTPS Support all the modules of Quectel

Cindy-wallys

分层架构最容易范的最昂贵错误

风铃架构日知录

分层架构 #java 服务层 封装业务逻辑

Webpack中的高级特性

Geek_02d948

webpack

从软件工程角度看测试

老张

软件工程 质量保障

细说nodejs的path模块

coder2028

node.js

细说Js中的this

hellocoder2029

JavaScript

Webpack中的plugin插件机制

Geek_02d948

webpack

分布式任务批处理技术选型与实践

苏格拉格拉

分布式 批处理 分布式任务 数据分片 任务调度

什么是代理服务器?它有哪些分类?

wljslmz

服务器 网络技术 11月月更 代理服务器

详解webpack构建优化

Geek_02d948

webpack

源码级深度理解 Java SPI

vivo互联网技术

Java Spring Boot dubbo spi

细说JavaScript闭包

hellocoder2029

JavaScript

Vue3知识点之数据侦测

yyds2026

Vue

一个更快的YOLOv5问世,附送全面中文解析教程

OneFlow

人工智能 深度学习 训练数据

用 nodejs 搭建脚手架

coder2028

node.js

从算力突破到应用全面开花,英特尔与阿里云那些不可不提的合作

科技之家

【C语言】continue 关键字

謓泽

阿里云张建锋:核心云产品全面 Serverless 化

阿里巴巴云原生

阿里云 Serverless 云原生

理解Nodejs中的进程间通信

coder2028

node.js

Koordinator 1.0 正式发布:业界首个生产可用、面向规模场景的开源混部系统

阿里巴巴云原生

阿里云 云原生 Koordinator

AntDB数据库与DSG强强联手,助力通信行业核心系统国产化

亚信AntDB数据库

aisware antdb AntDB数据库

Sprint产品待办列表的优先级要怎么排?

敏捷开发

项目管理 敏捷开发

Vue3, setup语法糖、Composition API全方位解读

yyds2026

Vue

可观测实践|如何利用 Prometheus 精细化观测云产品

阿里巴巴云原生

阿里云 云原生 Prometheus

Wallys|industrial wifi6 router/ Qualcomm IPQ8072A 4T4R support QCN9074/QCN6024 MOUDLE OPENWRT 802.11AX 10GE port 10G SFP

Cindy-wallys

阿里P8面试官总结的《2022java技术总结》,解决90%以上的技术面

程序知音

Java 程序员 后端技术 Java面试题 Java面试八股文

U-App移动统计算力升级!支持跨应用、多事件的打包计算

Vue3必会技巧-自定义Hooks

yyds2026

Vue

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