【问题标题】:Recommend crossplatform C++ UI and networking libraries推荐跨平台 C++ UI 和网络库
【发布时间】:2011-01-22 07:16:39
【问题描述】:

需要考虑的事项: - 使用方便 - 快速地 - 尽可能多地使用底层操作系统(例如用于 UI 的 wxWidgets)

我倾向于用于 UI 的 wxWidgets 和用于网络的 Boost - 它们与其他产品相比如何?

【问题讨论】:

    标签: c++ boost cross-platform wxwidgets


    【解决方案1】:

    我听说qt 用于 GUI 的好消息

    Qt 是一个跨平台的应用程序,并且 用户界面框架。使用 Qt,您可以编写 启用网络的应用程序一次和 将它们部署在桌面、移动设备和 没有嵌入式操作系统 重写源代码

    【讨论】:

    • 我会指出 QT 不是 c++。 moc 的加入意味着它是一种新语言(对 c++ 的扩展)。也就是说,它一个不错的图形库。
    • QT 非常强大,但许可可能是个问题...坚持使用 wxWidgets。
    • QT 是一个很好的答案,但之前提到过,它不是 C++ 并且对于 UI,它定义了它自己的外观(我的问题的一部分是尽可能接近操作系统)。不过感谢您的建议。
    • QT UI 尽可能使用本机操作系统图形。在任何情况下,您都可以编写自定义小部件。尽管它不是“技术上”的 C++,但实际上,您正在编写 C++。当然是在你的应用程序中不接触 QT 的部分。
    • 我没有选择它作为答案的两个原因 - 如上所述,它不是 C++,而且根据我的经验,它没有使用 OS UI(它在很多情况下都定义了自己的 UI)。与我认为的 wxWidgets 相比,它也是一个庞然大物。我很想知道是否有其他库,比如 wxWidgets(也许更好)——对 QT、GTK 等更大的库不感兴趣。对于我所追求的,它们超出了我需要的范围。无论如何感谢您的回答。
    【解决方案2】:

    QtwxWidgets 都可以建立网络,即使这不是他们的首要目标。

    更多以网络为中心的库,除了boost::asio,可以查看ACE(自适应通信 环境)或POCO

    这些库之间的比较有already been discussed on stackoverflow

    【讨论】:

    • 是的...实际上,如果您正在做 HTTP/FTP 的事情,请远离 wxWidgets 类。使用 libcurl。它也是跨平台的。
    • 我认为 boost::asio 的文档非常差。我会坚持使用 qt 和它的网络模块。 Qt 文档是我读过的最好的。
    【解决方案3】:

    boost::asio 似乎写得很好,并且有一个非常干净的 API —— 我仍在努力了解它对于无共享 multithreaded TCP/IP 的效果如何。

    您的其他选择可能是PocoACE。 Poco 的套接字抽象非常幼稚——即,它只允许 Poco 做事的方式。我从来没有听说过任何关于 ACE 的好消息。

    编辑:嗯,我正在重新检查 ACE,现在它对我来说更有意义(在编写了一些网络应用程序之后)——与 ASIO 相比,它可能更适合我的需求.但是,这对您来说很可能是矫枉过正。如果我的同龄人知道这件事,我会被人回避到最后。

    【讨论】:

      【解决方案4】:

      我对前端的 wxWidgets 和网络端的 boost::asio 有很好的了解。

      wxWidgets 确实有内置的网络类,但是你很快就会遇到它们,并且存在一两个很大的限制。如果你想留在 wx 世界里,有一个名为 wxCurl 的包,这是一个很好的包(我早期使用它),它用一些 wxWidgets idomatic C++ 包装了 libCurl。

      在我之前的一个项目(一个网络/文件传输繁重的项目)中,我们最终选择了 boost::asio,它的优点是 API 不是那么难,似乎更容易设置 libCRUL (虽然这可能已经变得更好了,那已经是几年了),并为我们提供了一个非常通用的网络核心(boost 可以在任何地方编译,甚至是命令行应用程序)

      【讨论】:

      • 不!不要使用 wxCurl!直接使用 libcurl。听我的建议:wxCurl 有它的错误。
      【解决方案5】:

      对于 GUI,我强烈建议使用 Qt。它是一个非常强大的 GUI 框架,只需要编写很少的代码行。它有非常好的和易于使用的信号和槽模型。

      wxWidgets恕我直言,MFC 模型太差了。

      网络:我建议去Boost.Asio 非常强大和漂亮。但是,如果你 想要将网络集成到 GUI 主循环,您可以尝试使用 Qt 类,但是我没有使用它们的经验。

      【讨论】:

        【解决方案6】:

        我们在使用 wxWidgets 和 boost::asio 方面取得了很好的成功,两者都推荐用于桌面服务器开发。

        【讨论】:

          【解决方案7】:

          对于GUI,我可以推荐QT

          用于网络 ACE(自适应通信环境)或 boost::asio。

          【讨论】:

            【解决方案8】:

            我曾经使用过XVT,它已被数千家公司用于商业用途。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-11
              • 2011-01-13
              相关资源
              最近更新 更多