用Visual Studio将Objective-C编译为C++

简介:

编译器支持

谷歌和苹果公司都使用Clang作为它们的C++前端。为了使他们的代码运行在Windows上,微软不得不将Visual C++的后端C2和Clang结合起来。

(Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,源代码发布于BSD协议下。译者注)

IDE支持

在Visual Studio中Objective-C具有语法高亮、代码完成和调试支持等功能。C++和C#文件可以包含在同一个项目中,允许程序来直接跨区域进行调用。编译器将处理所有的细节所以开发者只是看到正常的函数调用的封装处理。

大多数Objective-C项目都作为XCode项目而开始,所以Visual Studio提供了导入该项目类型的能力。VS和XCode项目文件可以存在于同一个项目中,这样你就可以在两种IDE对同一个项目进行开发。

混合模式项目

Windows提供了新的API给Objective-C,例如动态磁贴。为了确保代码可以继续在这两个平台之间共享,微软提供运行时检查来查看Windows API是否可以给很好的调用。或者,你可以使用预处理器指令从共享的代码中将特定平台的代码隔离出来。

运行时行为

默认情况下Windows下的Objective-C运行库检测到应用程序的原始平台来确定它的行为。例如,如果你提供一个iPhone应用程序然后它将默认在一个狭窄的窗口中运行,而iPad应用程序运行在一个正常的窗口中。

所有这些行为可由应用程序在需要时进行重写。

iOS API 兼容性

Windows 10支持iOS API的子集。它不会跟踪特定版本的iOS,但相反在标准中查看哪些APIs经常被使用。对于第一个版本,微软主要关注的APIs包括如下:

游戏:OpenGL,OpenAL以及传感器
UI:UIKit,CooreAnimation,CoreGraphics,CoreText,Touch
Objective-C:ARC,Blocks,Foundation

一些类如共享、通知和StoreKit的特性,开发者需要在保留iOS APIs以及使用Windows的替代方案之间进行选择。如果你选择保留iOS APIs,Windows将会提供一个兼容性层,这样的APIs将能够开始运作。而选择Windows的替代方案的好处在于你可以使用Windows的高级功能。

Swift

微软对于Swift的官方立场是“此时不做评论”。大概也就是说他们想要支持Swift但是目前太忙了,还要继续为Objective-C做准备,而秋天也许会宣布关于Swift的消息。



感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


目录
相关文章
|
2月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
649 2
|
5月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
499 3
|
2月前
|
IDE 编译器 开发工具
msvcp100.dll,msvcp120.dll,msvcp140.dll,Microsoft Visual C++ 2015 Redistributable,Visual C++ 运行库安装
MSVC是Windows下C/C++开发核心工具,集成编译器、链接器与调试器,配合Visual Studio使用。其运行时库(如msvcp140.dll)为程序提供基础函数支持,常因缺失导致软件无法运行。通过安装对应版本的Microsoft Visual C++ Redistributable可解决此类问题,广泛应用于桌面软件、游戏及系统级开发。
367 2
|
3月前
|
并行计算 C++ Windows
|
6月前
|
存储 算法 安全
c++模板进阶操作——非类型模板参数、模板的特化以及模板的分离编译
在 C++ 中,仿函数(Functor)是指重载了函数调用运算符()的对象。仿函数可以像普通函数一样被调用,但它们实际上是对象,可以携带状态并具有更多功能。与普通函数相比,仿函数具有更强的灵活性和可扩展性。仿函数通常通过定义一个包含operator()的类来实现。public:// 重载函数调用运算符Add add;// 创建 Add 类的对象// 使用仿函数return 0;
241 0
|
11月前
|
自然语言处理 编译器 C语言
为什么C/C++编译腰要先完成汇编
C/C++ 编译过程中先生成汇编语言是历史、技术和实践的共同选择。历史上,汇编语言作为成熟的中间表示方式,简化了工具链;技术上,分阶段编译更高效,汇编便于调试和移植;实践中,保留汇编阶段降低了复杂度,增强了可移植性和优化能力。即使在现代编译器中,汇编仍作为重要桥梁,帮助开发者更好地理解和优化代码。
为什么C/C++编译腰要先完成汇编
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
889 56