跨平台如何成为标准C ++库?

时间:2013-06-28 13:04:49

标签: android c++ ios cross-platform std

iOS和Android上是否可以使用C ++标准库(例如std :: string stream)(使用JNI / NDK)?如果是这样的话:

支持的程度如何? 桌面特定功能如控制台如何处理? 它有多快/可靠? 有多少其他移动平台? 在移植到移动平台(例如iOS)时,我可以依靠使用std库修改很多代码吗?

2 个答案:

答案 0 :(得分:2)

两者都提供C ++标准库。此外,iOS已经有了很长一段时间的C ++ 11。

这两个平台 - 基本上都是基于POSIX的 - 具有控制台IO的概念,但是它们都不能在用户界面中提供对它的访问,并且您(至少开箱即用)也不能直接运行控制台应用程序。

因此,很明显您不能将控制台IO用于与您的应用程序进行任何类型的用户交互 - 除非您使用平台的用户界面API构建它。

在可移植性方面,任何一个平台都不应该有任何问题 - 它是Android上的GNU Std G ++库和iOS上的Clang C ++库。在iOS上,可移植性不是问题,但您可能很有兴趣为Android构建JNI绑定。

实际上,你只能用C ++构建应用程序的后端。所有用户界面都是明显不可移植的,并且通常需要以UI框架的语言实现。

Windows Phone 8允许本机应用程序,而C ++似乎是实现它们的首选语言.BlackBerry OS 10基本上是QNX,它也是POSIX兼容的。

答案 1 :(得分:1)

据我所知,标准库应该是所有平台的标准。现在他们的内部实施可能会或将会有所不同,但他们应该执行它们被引入的任务。

通常std lib非常有效,快速且经过良好测试,因此它应该是可靠的。

实际的问题是std lib应该包含在C ++实现中,但无论是否包含std lib,它都完全取决于实现C ++的供应商。 即使它们不包含std lib,您也很有可能找到该平台的替代实现。然后,您所要做的就是将该库与您的代码链接起来。

假设有一个支持主要功能的C ++编译器。

即使不可能,您也可以将所需的std函数作为自定义库移植到该特定平台。

希望这有帮助,