什么是一些有趣的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
提升但不是生产力的一部分:)
Boost.Xpressive或如何在模板中编码正则expression式!
Boost.MPL将为模板的使用提供新的亮点,您将获得更精细的模板元编程,并深入挖掘SFINAE和模板演绎的精妙之处。
Boost.Preprocessor将为预处理器的使用和滥用提供新的线索。 当使用模板生成多个模板函数和类的重载(实际上MPL是基于它的)时,它非常方便。 尽pipe随着…的出现,兴趣有些缩小
的C ++ 0x!
新的标准库及其线程!
学习使用std::future
和std::function
,发现lambda的喜悦,基于范围的语法, auto
关键字!
C ++ 0x有这么多的新玩具,它几乎感觉像一种新的语言…这也是一个很好的刷你的旧技能和一个很好的方式留在 。
Hiberlite :
一个类似于hibernate的SQLite接口,有人应该用OTL写一个驱动到mysql!
LLVM :
JITdynamic新的代码到您的c + +
Irrlicht 3D引擎
我知道你正在寻找可以整合到日常工作中的图书馆,但是对于家庭项目来说,C ++的Wiimote库可能会导致一些有趣的项目:
游戏开发 – OGRE
对于GUI开发 – wxWidgets- CrossPlatform GUI库
而这两个库都是OpenSource。
Cinder和openFrameworks是“创意编码”的绝佳工具包,正如他们所说的那样。 这些图书馆,或者说是图书馆的集合,涵盖了从math和networking到2D,3Dgraphics,连接各种input设备等等的一切。
我最后一次有趣的是用SWIG挖掘与c ++相关的东西。 它是一个包装器/界面生成器,可以让你将c ++代码链接到Python。
意识到使用SWIG有多简单,本身就是很有启发性,也很有趣。 然后你可以玩弄混合Python和C ++库。
玩的开心!
食人魔已经提到了。 如果你想进入3D,那么Panda3D我发现很容易学习。
玩家/舞台项目是一个机器人控制界面和模拟库。 你可以模拟机器人或在真实的机器人上运行。