为啥c#可以在android和iOS上制作带有GUI的程序而c++不能? [关闭]

Posted

技术标签:

【中文标题】为啥c#可以在android和iOS上制作带有GUI的程序而c++不能? [关闭]【英文标题】:Why c# can make program with GUI on android and iOS but c++ cannot? [closed]为什么c#可以在android和iOS上制作带有GUI的程序而c++不能? [关闭] 【发布时间】:2012-07-31 04:19:55 【问题描述】:

Mono touch 可以让 C# 在 iosandroid 上编译

但是为什么没有 C++ 的东西可以让 C++ 原生支持 iOS 和 android。

我个人认为 C++ 比 C# 更容易。

谁能告诉我为什么 C# 有跨平台的 Gui 而 C++ 没有。

【问题讨论】:

我不想告诉你,但 C++ 比 C# 复杂得多。 Qt 框架 (qt.nokia.com) 可以使用 Necessitas (sourceforge.net/p/necessitas/home/necessitas) 实现 Android。它仍然是 alpha 质量的,但在 C++ 中肯定可以做到。 C++ 只有在使用标准库时才独立于平台。对于图形用户界面之类的东西,没有内置库。 C# 有一个非常广泛的库,在所有平台上都是相同的,它包括 GUI 部分。 【参考方案1】:

实际上,在 Android 上,您可以 develop applications completely in C++。您无法直接访问所有 J​​ava API,因此在某些情况下您可能仍需要一点 Java 代码。但是您可以直接访问 OpenGL ES、OpenSL ES、zlib 等。

至于 iOS.. 好吧,他们决定使用 Objective-C。到目前为止一切正常,但我知道,如果您来自纯 C/C++ 背景,学习曲线会有些小。至少 iOS 产品如今如此受欢迎这一事实意味着,为 ObjC 查找信息和学习材料不是任何问题。

【讨论】:

【参考方案2】:

C# 有一个标准化的 GUI 工具包 (.Net),而 C++ 没有。这是 C++ 在可预见的未来无法解决的问题,因为它违背了 C++ 的一些原则,在标准库方面需要性能和通用性。

因此,由于 GUI 不是标准化的,C++ 委员会不太可能会追究这种可能使 C++ 在某些平台上变得非常奇怪的事情。

另一方面,像 Qt 这样的独立框架可以做到这一点,但他们没有表现出这样的兴趣,主要是因为 Qt 无法在 iOS 上使用商业许可,因为合同限制了 Digia 的商业模式。苹果。

【讨论】:

这与 C# 的 UI 工具包无关。 Mono 绑定了 Android 和 iOS UI 工具包,而不是在 Android 或 iOS 上编写一些 C# UI。 当我把 .Net 放在那里时,我就是这么说的。 Mono 在 Windows 上的行为类似于 .Net。请仔细阅读。 没有。 Android 上的 Mono 不像 Windows 上的 .NET。它绑定到原生 Android 操作系统。与 iOS 相同。 而且 .Net 在本机 Windows 上有绑定。这是一个隐含的想法。 您能否详细说明 Digia 的限制条件? AFAIK 的主要问题是诺基亚对保持 Qt 跨平台的声誉不感兴趣(原因很明显)。 Digia 实际上致力于让 Qt 成为适用于 iOS、Android 和 Windows Phone 项目的可行框架。

以上是关于为啥c#可以在android和iOS上制作带有GUI的程序而c++不能? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 C# 数组在 Android 上运行时通过 ref 从 C# 传递到 C++ 库后变为长度 1 但在 Windows 上正常工作?

科尔多瓦应用程序为啥我可以在 ios 上播放我的媒体但在 android 上失败?

带有 TabLayout 的片段内的 ScrollView 不滚动,为啥?

如何制作带有圆形图像和圆形文本的 UI,以及在同一个圆圈上添加评级图标。在 iOS 应用程序中

Android studio 制作的 Flutter Project 可以发布到 iOs 上

为啥kivy mapview本身在android上似乎是一个错误?