什么是一些有趣的C / C + +库来玩?

我正在寻找一些新的库和C和C ++。 在过去的大部分时间里,我“偶然地”偶然发现了一些 – 其中大部分在我所从事的项目中发现很好。

图书馆应该运行在Mac OS X和Linux / POSIX上,并可能在Windows上运行。

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

这应该是标记的社区维基。 请更新,如果你有什么有趣的补充!

谢谢!


更新1

我不是在寻找像Boost或STL这样的“生产力”库。 相反,我正在寻找随机types的“有趣的新东西” – 无论是graphics库,脚本库,networking,甚至MOD / MIDI播放库。 对不起,我以前没有说清楚。

STL和Boost是必须的。

SQLite提供了一个完全embedded的,function齐全的关系数据库,可以包含在你的项目中。 由于其高度的存在(它包含在Mozilla Firefox以及Android和iOS中),这也是一个非常适合市场的技术。

如果您有兴趣创build用户界面,请查看ncurses – 这是用来创build许多terminal用户界面的库,对于创build游戏和shell实用程序非常有用。 Qt是C ++的一个很好的GUI框架。

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

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

如果你进入image processing等,那么OpenCV可能会很有趣。

每个C ++程序员都应该先玩这两个库:

  • C ++标准库 – 包括STL容器,STLalgorithm,STLfunction等
  • Boost C ++库。

对于GUI

  • 用于GUI开发的Qt工具包

为什么不试试OGRE并查看3Dgraphics?

可视化库可能是有趣的。 看看这个图库

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

子弹物理图书馆是一个开源的物理引擎,具有三维碰撞检测,软体动力学和刚体动力学。 它被用于游戏和电影中的视觉效果。

提升似乎是一个明显的select。

但是,如果你正在寻找一些更具体的东西,那么OpenCV库似乎正在产生很多兴趣 – 这是一个开源的计算机视觉库。

如果你想玩弄机器学习 (分类器等等), 贝叶斯networking ,或者试着创build自己的algorithm,但是想使用一些有用的工具(比如现成的优化和线性代数工具)然后检查出dlib 。 我认为它很棒,但我工作,所以我有点偏见:)

我喜欢和cimg一起玩,它是一个非常好的,易于使用的图像库,很适合用来混淆:p

http://cimg.sourceforge.net/

提升但不是生产力的一部分:)

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

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

Boost.Preprocessor将为预处理器的使用和滥用提供新的线索。 当使用模板生成多个模板函数和类的重载(实际上MPL是基于它的)时,它非常方便。 尽pipe随着…的出现,兴趣有些缩小

的C ++ 0x!

新的标准库及其线程!

学习使用std::futurestd::function ,发现lambda的喜悦,基于范围的语法, auto关键字!

C ++ 0x有这么多的新玩具,它几乎感觉像一种新的语言…这也是一个很好的刷你的旧技能和一个很好的方式留

Hiberlite

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

LLVM

JITdynamic新的代码到您的c + +

Irrlicht 3D引擎

我知道你正在寻找可以整合到日常工作中的图书馆,但是对于家庭项目来说,C ++的Wiimote库可能会导致一些有趣的项目:

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

游戏开发 – OGRE
对于GUI开发 – wxWidgets- CrossPlatform GUI库

而这两个库都是OpenSource。

Cinder和openFrameworks是“创意编码”的绝佳工具包,正如他们所说的那样。 这些图书馆,或者说是图书馆的集合,涵盖了从math和networking到2D,3Dgraphics,连接各种input设备等等的一切。

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

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

玩的开心!

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

玩家/舞台项目是一个机器人控制界面和模拟库。 你可以模拟机器人或在真实的机器人上运行。