【问题标题】:C++ API for multiplatform development用于多平台开发的 C++ API
【发布时间】:2009-07-31 04:32:55
【问题描述】:

我想学习 C++ 以在各种平台(主要是 Linux 和 Windows)上工作。我遇到过一些解决方案,例如 Boost C++ 库、Qt 工具包等,它们可用于编写可在两个平台上编译的程序。

我想从社区中知道,您会参考使用哪种类型的库,以及您之前是否有过这种类型的多平台编程的经验。

【问题讨论】:

    标签: c++ api multiplatform


    【解决方案1】:

    使用QtBOOST C++ Libraries。它们都是免费的,而且质量很高。另外,至少对我个人而言,我发现 Qt 比 wxWidgets 更直接、更容易学习和更简单。

    【讨论】:

      【解决方案2】:

      这取决于你要做什么。如果您需要编写严格的命令行实用程序来处理文本,QtwxWidgets 可能不合适。你的应用领域到底是什么?

      科学计算是我的专业领域。其中这些是出色的多平台 API:

      并行编程

      数值算法

      高性能文件 I/O

      可视化

      【讨论】:

        【解决方案3】:

        您没有指定任何特定类型的库,但如果您只是想要一个一般性推荐,我不得不说 wxWidgets 是一个出色的跨平台 GUI 库。

        它有一些很棒的功能,例如以运行它的操作系统的本机外观呈现 GUI,而且学习起来并不难。它为跨 Win/Mac/Linux 以及 WinCE 等其他工具的 GUI 编写提供了单一 API。

        我强烈推荐它用于跨平台 GUI 工作。

        查看http://www.wxwidgets.org/

        【讨论】:

        • +1 外观很重要,但经常被 GUI 工具包忽视。
        【解决方案4】:

        如果您正在做任何类型的 GUI 工作,我强烈推荐 Qt;如果你不是,它甚至会非常有用,因为它也有经过深思熟虑的网络/数据库/容器/等 API。这是一个设计精良的 API,非常易于使用。

        【讨论】:

          【解决方案5】:

          核心 C++ 标准和 STL 几乎已经是跨平台的了。它通常只是需要库的 GUI 和硬件访问的东西。

          我使用 GTK+ 作为 GUI 工具包,它也很不错,虽然你需要在 windows 上安装 glib 和其他一些东西。

          RtAudio 非常适合跨平台音频 I/O。

          windows 和 linux 之间的低级网络/套接字内容基本相同,您可以自己编写一个非常轻量级的层来处理任何差异。我对高级网络库没有任何经验。

          我也喜欢用于跨平台 2d 图形类型内容的 SFML(简单快速媒体库)。确实很不错。


          不过,我建议,如果您只是学习 c++,那么您最好查看 Boost(或者实际上是这些工具包中的任何一个),直到您已经掌握了基础知识 - 例如,通过编写几个基本的控制台应用程序。

          如果您只想学习 c++ 以便进行多平台开发,请注意还有许多其他语言和相关工具包可能更适合,具体取决于您的应用程序写作。

          在不知道您计划开发的应用程序类型的情况下,很难说 C++(或 C 或 Python 或其他)是否是最好的主意。就个人而言,对于跨平台 GUI 应用程序,我通常使用 Python + PyGTK,而对于纯 Windows 应用程序,我会使用 C#。您可以随时插入 C/C++ 来替换运行速度过慢的任何组件。

          【讨论】:

          • 其实我才刚刚开始学习C++。我的目标是能够编写多平台应用程序。我只是想了解可用的工具以及人们如何做这些事情。谢谢。
          【解决方案6】:

          就像其他发帖人提到的那样,我会推荐 Qt 和 Boost 进行跨平台开发。我曾尝试过 gtkmm,它是一个围绕 GTK+ 的精简 C++ 包装器,但对它并不满意,部分原因是它不是原生 C++ 库,而且与 Qt 相比,它的文档很差。除此之外,Qt 带有非常好的开发环境,包括一个易于编写的 make 替代 qmake 和一个 gui 设计器。

          【讨论】:

            【解决方案7】:

            我打算在 C++ 中进行一些跨平台开发,而您不想维护不同的构建系统(Makefile、Visual Studio 项目等),有几种工具可以帮助您。

            我个人使用的是CMake。它支持 Linux 和 Unix Flavours、Windows 和 Mac/OS。实际上有几个开源项目,比如 KDE,都在使用它。但是还有其他选项,例如 Scons

            【讨论】:

              【解决方案8】:

              标准 C++ 程序可以编译并具有可移植性,即可以跨多种平台工作。为了确保您保持代码干净,最好的办法是使用几个不同的编译器并使用所有这些编译器检查您的代码,同时强制完全符合标准(例如,使用-std=g++ 之类的选项)和编写无警告代码(使用诸如g++-W -Wall -Werror 之类的选项,它发出错误而不是警告)。编译器的确切选择取决于您,但如果您主要是在学习,我建议您使用:

              • g++(免费、开源)
              • 英特尔编译器(在 Linux 上免费用于非商业用途)
              • 也许是 MSVC++

              此外,如果您确实必须在项目中使用编译器或目标特定的代码,请务必将其抽象化,以便将其全部集中在一个地方,并对您的其余代码隐藏。

              现在,如果您想使用的不仅仅是 STL,那么您需要通过考虑它们所针对的编译器和平台的范围来选择您的库(而且,如果文档没有说明,那就太糟糕了预兆)。详细的选择取决于您到底想做什么,但 Boost(作为一个强大的、广泛的库,可解决许多常见问题)和 Qt(最新版本;用于 GUI 编程)是不错的选择。对于数值、科学编程,BLAS/LAPACK(和/或它们的并行版本,BLACS 和 Scalapack)被非常广泛地使用,直接或通过包装 C++ 类可以在 Boost(对于 BLAS)中找到;通常还需要一个好的 FFT 库(如果 GPL 许可对您来说不是负担,那么 FFTW 很好)。

              【讨论】:

                猜你喜欢
                • 2013-01-24
                • 1970-01-01
                • 2013-06-09
                • 2017-12-27
                • 2016-11-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多