在 Visual Studio中 将 Objective-C 编译为 C++

心中
 心中
发布于 2015年05月08日
收藏 17

英文原文:Compiling Objective-C into C++ with Visual Studio

曾有人谣传微软 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。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:在 Visual Studio中 将 Objective-C 编译为 C++
加载中

最新评论(24

妈她亲我
妈她亲我

引用来自“_再见理想”的评论

vs印象中卡的一逼
那是你电脑太烂了。运行VS都卡,那你运行eclipse岂不是卡成翔?
青木_
青木_

引用来自“_再见理想”的评论

vs印象中卡的一逼

引用来自“心中”的评论

电脑奔腾G2030,4G内存开三四个VS.. 都不卡

引用来自“阿cat”的评论

传说中的牛人、还配了个牛电脑、duang duang 佩服

引用来自“心中”的评论

事实而已,平常就这么用。用VS2013编辑微软的Orchard项目一个解决方案有88个项目.也才占200-300M内存而已.

引用来自“大头s”的评论

其实我觉得vs比eclipse流畅多了
666666666666
大头s
大头s

引用来自“_再见理想”的评论

vs印象中卡的一逼

引用来自“心中”的评论

电脑奔腾G2030,4G内存开三四个VS.. 都不卡

引用来自“阿cat”的评论

传说中的牛人、还配了个牛电脑、duang duang 佩服

引用来自“心中”的评论

事实而已,平常就这么用。用VS2013编辑微软的Orchard项目一个解决方案有88个项目.也才占200-300M内存而已.
其实我觉得vs比eclipse流畅多了
心中
心中

引用来自“_再见理想”的评论

vs印象中卡的一逼

引用来自“心中”的评论

电脑奔腾G2030,4G内存开三四个VS.. 都不卡

引用来自“阿cat”的评论

传说中的牛人、还配了个牛电脑、duang duang 佩服
事实而已,平常就这么用。用VS2013编辑微软的Orchard项目一个解决方案有88个项目.也才占200-300M内存而已.
MGL_TECH
MGL_TECH

引用来自“_再见理想”的评论

vs印象中卡的一逼

引用来自“心中”的评论

电脑奔腾G2030,4G内存开三四个VS.. 都不卡
传说中的牛人、还配了个牛电脑、duang duang 佩服
struct
struct

引用来自“jxpxwh”的评论

兼容性处理的。包罗万象。最后不会什么也成不了吧。

引用来自“田晓阳”的评论

不会已,最终一切在VS中都会变成MSIL
几年前就改名了,不叫MSIL了,叫CIL。
TuWei
TuWei

引用来自“_再见理想”的评论

vs印象中卡的一逼
Xcode,myeclipse 也不是特别流畅……
心中
心中

引用来自“_再见理想”的评论

vs印象中卡的一逼
电脑奔腾G2030,4G内存开三四个VS.. 都不卡
TuWei
TuWei

引用来自“MarvinGuo”的评论

LLVM是好东西,VS能玩Objective-C,我以后就不用苹果折腾了,先观望中
支持一个
MarvinGuo
MarvinGuo
LLVM是好东西,VS能玩Objective-C,我以后就不用苹果折腾了,先观望中
返回顶部
顶部