关于开源项目的大惊小怪,为什么还没有一个强大的标准可以让你制作可移植的代码(我的意思是C/C++
而不是Java
或C#
)
每个人都有点自己做汤。
甚至还有一些第三方库,如Apache Portable Runtime
。
答案 0 :(得分:5)
是的,没有标准,但像 Qt 和提升这样的库可以让您在进行跨平台开发时更轻松。
答案 1 :(得分:3)
wxwidgets是大多数窗口管理器的本机GUI小部件上的一个很棒的抽象层。
答案 2 :(得分:1)
我认为没有任何单个图书馆同意的主要原因是每个人的要求都不同。当你想要包装系统库时,你经常需要对用例是什么做一些假设,除非你想让包装器变得庞大而且无法使用。我认为这可能是没有单一,通用跨平台运行时的主要原因。
对于GUI,原因是每个平台都有自己的UI约定,你不能编写一个适合所有人的GUI,你只需得到一个只适合一个甚至根本没有。
答案 3 :(得分:1)
有许多库可以让他们自己更容易地进行跨平台开发,但是为所有平台制作一个完整的包装器最终会变得小而且高度定制,或者大规模且完全荒谬。
遵循它的逻辑结论,操作系统所有方面的完整包装器成为整个虚拟运行时。你也可以制作自己的编程语言。
答案 4 :(得分:1)
The ADAPTIVE Communication Environment (ACE)是一个出色的面向对象框架,它为所有低级操作系统功能提供跨平台支持,如线程,套接字,互斥体等。它运行着大量的编译器和操作系统。 / p>
答案 5 :(得分:1)
C和C ++语言是标准语言。如果您在编码时严格遵循其规则(这意味着不使用特定于供应商的扩展),那么您的代码应该是可移植的,您应该能够在任何操作系统上使用任何现代编译器进行编译。
然而,C和C ++没有GUI库,如Java或C#,但是存在一些免费或商业GUI库,允许您编写可移植的GUI应用程序。
我认为最流行的是Qt(商业)和wxWidgets(FOSS)。根据{{3}},还有更多。
还有提升,而不是GUI库wikipedia是对C ++的STL的一个非常好的补充。事实上,一些升级图书馆将在下一个C ++标准中添加。
答案 6 :(得分:0)
如果你确保它使用GCC和MS VC ++进行干净的编译,那么移植到其他地方只需要额外的努力。