【问题标题】:What are some interesting C/C++ libraries to play around with? [closed]有哪些有趣的 C/C++ 库可以玩? [关闭]
【发布时间】:2011-07-12 17:59:35
【问题描述】:

我正在寻找一些新的库以及 C 和 C++。在过去的大部分时间里,我“不小心”偶然发现了一些——其中大多数在我从事的项目中找到了很好的用途。

库应该在 Mac OS X 和 Linux/POSIX 上运行,也可能在 Windows 上运行。

  • Lua - 用于配置文件和基本应用程序脚本的最小且快速的脚本引擎。
  • V8 - Google 引擎的快速 JavaScript,类似于 WebKit 的 JavaScriptCore。
  • Cairo - 一个很好的图形库,类似于 Mac OS X 上的 QuickDraw/Quartz。
  • ZBar - 条码扫描器库,允许扫描照片/图像/视频流中的条码并返回其值。
  • ZLib - 一个非常紧凑的数据流压缩库。也使用了 zziblib 和 minizip。
  • DynaPDF - 一个易于使用的 PDF 生成库。
  • libusb - 一个通用 USB 库,允许便携式访问 USB 设备(我用它来编写自定义 POS 打印机的基本驱动程序)。
  • WebKit - 如果您想渲染 HTML/Web 内容并在应用程序中使用它来为您的用户提供“更丰富”的用户体验,这是一个非常好的选择。
  • Qt4 - 适用于各种桌面(可能还有移动)开发的通用框架。我花了很多时间在上面——不知道我怎么能忘记它。 ;)

这应该被标记为社区 wiki。如果你有什么有趣的东西要补充,请更新!

谢谢!


更新 1

我不是在寻找像 Boost 或 STL 这样的“生产力”库。相反,我正在寻找随机流派的“有趣的新东西”——无论是图形库、脚本库、网络,甚至是 MOD/MIDI 播放库。抱歉,我之前没有说清楚。

【问题讨论】:

  • @bua: CW 已经dead 很久了。
  • @badcat:尝试进入模板元编程。它将极大地扩展您对 C++ 可能性的看法。
  • @Nawaz & @badcat:当人们询问日志库时,我一直指向templog.org,但似乎主干目前运行得不太好,而制造它的人显然没有t 有时间/精力/任何事情来处理它。 IMO 它是一个出色的实际应用 TMP(主要是表达式模板)在一个小型、易消化的库(主要是一半十几个标题)。 IOW,这是一个修补的理想游乐场。 (我的一位前同事要求 SVN 写入权限以添加他自己的东西并在数小时内得到它。)

标签: c++ c posix libraries


【解决方案1】:

每个 C++ 程序员都应该首先使用这两个库:

  • C++ 标准库 - 包括 STL 容器、STL 算法、STL 函数式等。
  • Boost C++ 库。

图形用户界面

【讨论】:

  • 你可能是指标准模板库,又名 STL?
  • @Lundin:我的意思是还包括 STL 的 C++ 标准库。看到这个What's this STL vs. “C++ Standard Library” fight all about?
  • 他可能没有,标准模板库与标准 C++ 库不同,因为只有部分(如容器和算法)被合并到 C++98 中,并且标准 (C++) 库包含更多内容。
  • 我的错。原来我太老了,以至于在 STL 成为标准的一部分之前我就在做 C++。曾几何时,STL 只是一个“事实上的”标准,因此人们单独引用它,就像你现在对 Boost 所做的那样。无论如何,OP 正在寻找新的、新鲜的和令人兴奋的东西,这可能排除了大部分 C++ 库......
【解决方案2】:

Boost 似乎是一个显而易见的选择。

但是,如果您正在寻找更具体的东西,那么 OpenCV 库目前似乎引起了很多兴趣 - 它是一个开源计算机视觉库。 p>

【讨论】:

    【解决方案3】:

    STL 和 Boost 是必须的。

    SQLite 提供了一个完全嵌入式、功能齐全的关系数据库,大小只有 100k,您可以将其直接包含到您的项目中。由于它的存在率很高(它包含在 Mozilla Firefox 以及 Android 和 iOS 中),它也是一种非常有市场价值的技能。

    如果您对创建用户界面感兴趣,请查看ncurses——它是用于创建许多终端用户界面的库,对于创建游戏和 shell 实用程序非常有用。 Qt 是一个很好的 C++ GUI 框架。

    如果您对图形或创建游戏感兴趣,可以考虑使用 SDL 或 OpenGL(如果您不介意只在 Windows 上工作,可以考虑使用 DirectX)。

    当然,有成千上万个有趣的库。这真的取决于你对什么感兴趣。

    【讨论】:

    • Qt 真的是一部严肃的作品。也许这是我个人的看法,但 Qt 是 C++ 中功能最完善、功能最完善的 GUI 框架之一。
    【解决方案4】:

    我喜欢玩 cimg,它是一个非常好的、易于使用的图像库,非常适合玩弄 :p

    http://cimg.sourceforge.net/

    【讨论】:

      【解决方案5】:

      我知道您可能正在寻找可以集成到日常工作中的库,但对于家庭项目,C++ Wiimote 库可能会带来一些有趣的项目:

      http://pawst.com/post/471040-c-wiimote-library

      【讨论】:

        【解决方案6】:

        Visualization Library 可能很有趣。 Check out this Gallery

        可视化库是一个 C++ 用于高性能 2D 和 基于 3D 图形应用程序 行业标准 OpenGL 1.x-4.x, 旨在开发便携式 适用于 Windows、Linux 的应用程序 和 Mac OS X 操作系统。

        Bullet Physics Library 是一个开源物理引擎,具有 3D 碰撞检测、软体动力学和刚体动力学。它用于游戏和电影中的视觉效果。

        【讨论】:

        • 可视化链接似乎已关闭。
        【解决方案7】:

        如果您喜欢图像处理等,那么OpenCV 可能会很有趣。

        【讨论】:

          【解决方案8】:

          为什么不试试OGRE 看看 3D 图形?

          【讨论】:

            【解决方案9】:

            我最后一次有兴趣深入研究与 c++ 相关的东西是在SWIG。 它是一个包装器/接口生成器,可让您将 c++ 代码链接到 Python。

            意识到使用 SWIG 是多么简单,这本身就很有启发性,也很有趣。 然后,您可以尝试混合 Python 和 C++ 库。

            玩得开心!

            【讨论】:

              【解决方案10】:

              已经提到了食人魔。如果你想进入 3D,那么 Panda3D 我觉得很容易学习。

              Player/Stage Project 是一个机器人控制接口和仿真库。您可以模拟机器人或在真实机器人上运行它。

              【讨论】:

                【解决方案11】:

                提升,但不是生产性部分 :)

                Boost.Xpressive 或如何在模板中编码正则表达式!

                Boost.MPL 将为模板的使用提供新的视角,您将更深入地了解模板元编程并深入挖掘 SFINAE 和模板推导的微妙之处。

                Boost.Preprocessor 将为预处理器的使用和滥用提供新的视角。当使用模板生成模板函数和类的多个重载时,它非常方便(实际上 MPL 就是基于它)。随着...的出现,人们的兴趣有所减少。

                C++0x!

                带有线程的新标准库!

                学习使用std::futurestd::function,发现lambdas、基于范围的for 语法、auto 关键字的乐趣!

                C++0x 有这么多新玩具,几乎感觉像是一门新语言……它也是你旧技能的一个很好的刷子,也是一个留在的好方法。 p>

                【讨论】:

                  【解决方案12】:

                  Hiberlite:

                  一个类似于休眠的 SQLite 接口,有人应该使用 OTL 为 mysql 编写驱动程序!

                  LLVM:

                  JIT 动态地将新代码添加到您的 c++ 中

                  Irrlicht 3D engine

                  【讨论】:

                    【解决方案13】:

                    用于游戏开发 - OGRE
                    用于 GUI 开发 - wxWidgets- CrossPlatform GUI Library

                    这两个库都是开源的。

                    【讨论】:

                      【解决方案14】:

                      如果你想玩machine learning(分类器之类的东西),Bayesian networks,或者尝试创建自己的算法但想使用一些有用的工具(例如现成的优化和线性代数工具)然后查看dlib。我认为它很棒,但我正在努力,所以我有偏见:)

                      【讨论】:

                        【解决方案15】:

                        CinderopenFrameworks 是很棒的“创意编码”工具包,正如他们所说。这些库,或者说是库的集合,涵盖了从数学和网络到 2d、3d 图形、连接各种输入设备等等的所有内容。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2010-10-28
                          • 1970-01-01
                          • 2011-06-24
                          • 2011-06-10
                          • 2010-09-06
                          相关资源
                          最近更新 更多