我观看了一个视频,其中scs软件的主管之一(制作一个EURO TRUCK SIMULATOR游戏)说游戏完全用C ++编写,但游戏也在Windows和Mac OS上运行。他们怎么能实现呢?是否可以在MAC OS上运行C ++程序?
答案 0 :(得分:1)
是
...好吧,堆栈溢出需要至少30个字符。 OS X附带了C ++编译器clang++
,它构建在llvm
之上。事实上,Apple不久前停止提供gcc
端口,因此开发人员必须自己构建或适应clang
。据维基百科称,Apple自身开发clang
。
答案 1 :(得分:0)
可以在终端中运行gcc或使用Xcode编译它,但是你不能使用Cocoa,但是Qt等替代品可用于mac。
答案 2 :(得分:0)
当然,还有适用于Mac OS X的C ++编译器。其中一个甚至包含在xcode(Mac上的标准开发环境)中。
但这并不意味着你可以在Mac上编译任何C ++程序。它必须设计为使用两个平台上可用的库(而不是Windows上的MFC或Mac上的Cocoa)。这可以通过使用wxwidgets或QT来实现。有了这两个库,甚至可以为Linux平台编译程序。
答案 3 :(得分:0)
无论语言如何,多平台程序都依赖于在每个平台上以不同方式实现的一些基本支持部分。使用纯标准C ++,这是标准库和运行时支持,但实际上,游戏也将依赖于具有平台特定实现的3个 rd 方库。因此,假设平台本身与C ++语言和Mac的基本平台假设兼容,实现这种可移植性在概念上非常简单,尽管难以完美。
作为一个与C ++不完全兼容的平台的例子,微软的.NET虚拟机显然与C ++的想法不一致,微软认为有必要为它定义两种不同的非标准C ++变体,并且无法在纯标准C ++中为它生成GUI程序。 不可能仅使用标准C ++ for .NET,实际上将C ++与.NET结合使用的一个主要原因是将标准C ++部分与更多.NET-y部分结合起来;只是使用标准C ++代码变得复杂,低效且通常不切实际。例如,我在这里提出的第一个问题涉及如何通过COM技术作为中间层在标准C ++中执行一个简单的.NET消息框,这样做有效,但是有一些非常复杂的非通用支持代码。 / p>
另一个例子是,在网页中使用C ++可能就是阻抗不匹配。微软再次尝试使用他们的ActiveX技术。事实证明这是确保全世界的PC都充斥着恶意软件的好方法,因为C ++不是那种容易限制代码可以做什么的语言。据我所知,只有微软自己的Internet Explorer浏览器才支持网页中的ActiveX。从Windows 10开始,IE浏览器正逐步淘汰,并被更新的Edge浏览器取代,该浏览器不支持网页中的ActiveX。