有什么有趣的C / C ++库可供使用?

时间:2011-03-10 13:59:10

标签: c++ c posix libraries

我正在寻找一些新的库以及C和C ++。在过去的大部分时间里,我“偶然”偶然发现了一些 - 其中大多数在我工作的项目中都有很好的用途。

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

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

这应该标记为社区维基。如果您有兴趣添加一些内容,请更新!

谢谢!


更新1

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

15 个答案:

答案 0 :(得分:22)

STL和Boost是必须的。

SQLite提供了一个完全嵌入的,功能齐全的关系数据库,只需几百k就可以包含在您的项目中。它也是一种极具市场价值的技能,因为它具有很高的存在感(它包含在Mozilla Firefox以及Android和iOS中)。

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

如果您对图形或创建游戏感兴趣,请考虑SDL或OpenGL(如果您不介意仅使用Windows,请考虑使用DirectX)。

当然,有数千个有趣的图书馆。这真的取决于你感兴趣的东西。

答案 1 :(得分:12)

如果您正在进行图像处理等,那么OpenCV可能会让您感兴趣。

答案 2 :(得分:8)

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

  • C ++标准库 - 包括STL容器,STL算法,STL功能等。
  • Boost C ++ Libraries。

对于GUI

答案 3 :(得分:7)

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

答案 4 :(得分:5)

Visualization Library可能会引起人们的兴趣。 Check out this Gallery

  

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

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

答案 5 :(得分:4)

Boost 似乎是一个明显的选择。

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

答案 6 :(得分:4)

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

答案 7 :(得分:3)

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

http://cimg.sourceforge.net/

答案 8 :(得分:3)

提升但不是生产部分:)

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

Boost.MPL将为模板的使用带来新的亮点,你将获得更精细的模板元编程,并深入挖掘SFINAE和模板演绎的细微之处。

Boost.Preprocessor将揭示预处理器的使用和滥用。当使用模板生成模板函数和类的多个重载时(实际上MPL基于它),它非常方便。随着......的出现,这种兴趣有所减少。

<强>的C ++ 0x!

新标准库及其主题!

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

C ++ 0x有这么多新玩具,它几乎就像一种新语言...而且它也是你旧技能的一个很好的刷子,也是 的好方法。

答案 9 :(得分:3)

Hiberlite

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

LLVM

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

Irrlicht 3D engine

答案 10 :(得分:2)

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

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

答案 11 :(得分:2)

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

这两个库都是开源的。

答案 12 :(得分:2)

CinderopenFrameworks是创造性编码的绝佳工具包,正如他们所说的那样。这些库,或者更确切地说是库的集合,涵盖了从数学和网络到2D,3D图形,连接各种输入设备等的所有内容。

答案 13 :(得分:1)

我最后一次有趣地挖掘与c ++相关的东西是SWIG。 它是一个包装器/接口生成器,可以将c ++代码链接到Python。

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

玩得开心!

答案 14 :(得分:1)

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

Player/Stage Project是机器人控制界面和模拟库。您可以模拟机器人或在真实机器人上运行它。