【问题标题】:Making portable code制作可移植代码
【发布时间】:2010-09-08 20:34:13
【问题描述】:

在开源项目上大惊小怪,为什么仍然没有一个强大的标准可以让你制作可移植的代码(我的意思是C/C++而不是JavaC#) 每个人都喜欢自己做汤。

甚至还有一些第三方库,例如Apache Portable Runtime

【问题讨论】:

    标签: c++ c portability


    【解决方案1】:

    是的,没有标准,但是像 Qtboost 这样的库可以让您在进行跨平台开发时变得更加轻松。

    【讨论】:

      【解决方案2】:

      wxwidgets 是大多数窗口管理器的原生 GUI 小部件上的一个很好的抽象层。

      【讨论】:

        【解决方案3】:

        我认为没有任何人同意任何单一库的主要原因是每个人的要求都不同。当您想要包装系统库时,您通常需要对用例的内容做出一些假设,除非您想让包装器变得庞大且无法使用。我认为这可能是没有单一、通用的跨平台运行时的主要原因。

        对于 GUI,原因可能是每个平台都有自己的 UI 约定,您不能编写一个适合所有的 GUI,您只会得到一个只适合一个甚至根本不适合的 GUI。

        【讨论】:

          【解决方案4】:

          有许多库本身可以使跨平台开发变得更容易,但是为所有平台制作一个完整的包装器最终要么是小而高度定制的,要么是庞大而完全荒谬的。

          按照逻辑得出的结论是,操作系统所有方面的完整包装器成为整个虚拟运行时。您不妨自己制作编程语言。

          【讨论】:

            【解决方案5】:

            The ADAPTIVE Communication Environment (ACE) 是一个出色的面向对象框架,它为所有低级操作系统功能(如线程、套接字、互斥锁等)提供跨平台支持。它与大量编译器和操作系统一起运行。

            【讨论】:

              【解决方案6】:

              C 和 C++ 作为语言是标准语言。如果您在编码时严格遵循他们的规则(这意味着不使用特定于供应商的扩展),那么您的代码应该是可移植的,并且您应该能够在任何操作系统上使用任何现代编译器对其进行编译。

              但是,C 和 C++ 没有 GUI 库,如 Java 或 C#,但是有一些免费或商业的 GUI 库可以让您编写可移植的 GUI 应用程序。

              我认为最受欢迎的是Qt(商业)和wxWidgets(FOSS)。根据wikipedia,还有很多。

              还有 boost,虽然不是 GUI 库 boost 是对 C++ 的 STL 的一个非常好的补充。事实上,一些 boost 库将被添加到下一个 C++ 标准中。

              【讨论】:

                【解决方案7】:

                如果您确保它可以与 GCC 和 MS VC++ 一起干净地编译,那么移植到其他地方就不需要额外的努力了。

                【讨论】:

                • 如果你用 GCC 和 MSVC 在 Windows 上成功构建了一些东西,你根本无法保证它在其他任何地方都能工作:字节序? (英特尔是小端,许多其他的是大端)整数/指针大小? (16/32/64 都是通用的)API? (Linux 和 UNIX 没有 WINAPI...)而且我确信可以找到其他示例。我敢打赌,在 IBM z/OS 上构建一个 MSVC 程序会非常“有趣”……
                猜你喜欢
                • 1970-01-01
                • 2012-11-22
                • 1970-01-01
                • 1970-01-01
                • 2017-03-11
                • 1970-01-01
                • 2021-07-25
                • 1970-01-01
                • 2011-09-22
                相关资源
                最近更新 更多