Какие интересные библиотеки C/С++ можно использовать?

Я ищу несколько новых библиотек и для C и С++. В прошлом большую часть времени я "случайно" натыкался на несколько - и большинство из них нашли хорошее применение в проектах, над которыми я работал.

Библиотеки должны работать в Mac OS X и Linux/POSIX и, возможно, в Windows.

  • Lua - минимальный и быстрый скриптовый движок для файлов конфигурации и основных сценариев приложений.
  • V8 - быстрый JavaScript от Google, похожий на WebKit JavaScriptCore.
  • Cairo - хорошая библиотека графиков, похожая на QuickDraw/Quartz на Mac OS X.
  • ZBar - библиотека сканера штрих-кодов, которая позволяет сканировать фотографии/изображения/видеопотоки для штрих-кодов и возвращать их значение.
  • ZLib - очень компактная библиотека сжатия для потоков данных. Также используются zziblib и minizip.
  • DynaPDF - простая в использовании библиотека генерации PDF.
  • libusb - универсальная библиотека USB, которая позволяет переносить доступ к USB-устройствам (я использовал это для написания основной драйвер для пользовательского POS-принтера).
  • WebKit - это действительно приятно, если вы хотите отображать содержимое HTML/Web и использовать его в приложений, чтобы дать пользователям более "богатый" пользовательский интерфейс.
  • Qt4 - универсальная структура для всех видов настольных (и, возможно, мобильных) разработок. Проводя много времени с этим - не знаю, как я мог это забыть.;)

Это должна быть отмеченная вики сообщества. Обновите, если у вас есть что-то интересное!

Спасибо!


Обновление 1

Я не ищу "библиотеки производительности", такие как Boost или STL. Вместо этого я ищу "интересный новый материал" случайных жанров - будь то графические библиотеки, библиотеки сценариев, сетевые или даже проигрываемые библиотеки MOD/MIDI. Извините, я раньше этого не делал.

Ответ 1

STL и Boost являются обязательными.

SQLite предоставляет полностью встроенную полнофункциональную реляционную базу данных всего за 100 000, которую вы можете включить прямо в свой проект. Это также высокореализуемое умение из-за его высокого присутствия (оно включено в Mozilla Firefox, а также Android и iOS).

Если вы заинтересованы в создании пользовательских интерфейсов, загляните в ncurses - это библиотека, которая была использована для создания большого количества пользователей терминала интерфейсы и могут быть очень полезны для создания игр и утилит оболочки. Qt является хорошей графической оболочкой для С++.

Если вас интересует графика или создание игр, рассмотрите SDL или OpenGL (или DirectX, если вы не против работать только с Windows).

Конечно, есть тысячи интересных библиотек. Это действительно зависит от того, что вас интересует.

Ответ 2

Если вы работаете с обработкой изображений и т.д., то OpenCV может быть интересно сыграть с.

Ответ 3

Каждый программист на С++ должен сначала играть с этими двумя библиотеками:

  • Стандартная библиотека С++ - включая STL-контейнеры, STL-алгоритм, STL-функционал и т.д.
  • Библиотеки Boost С++.

Для GUI

Ответ 4

Почему бы не попробовать OGRE и заглянуть в 3D-графику?

Ответ 5

Библиотека визуализации может представлять интерес. Ознакомьтесь с этой галереей

Библиотека визуализации - это С++ промежуточное ПО для высокопроизводительных 2D и Приложения 3D-графики, основанные на промышленный стандарт OpenGL 1.x-4.x, предназначен для разработки переносных приложения для Windows, Linux и Mac OS X.

Библиотека физики пули - это физический движок с открытым исходным кодом, содержащий 3D-обнаружение столкновения, динамику мягкого тела и твердое тело динамика. Он используется в играх и визуальных эффектах в фильмах.

Ответ 6

Boost представляется очевидным выбором.

Но если вы ищете что-то более конкретное, то библиотека OpenCV кажется создавая большой интерес на данный момент - это библиотека компьютерного зрения с открытым исходным кодом.

Ответ 7

Если вы хотите поиграть с машинным обучением (классификаторы и т.д.), байесовские сети, или попробуйте свои силы при создании собственных алгоритмов, но хотите использовать некоторые полезные для этого инструменты (например, готовые инструменты оптимизации и инструменты линейной алгебры), затем проверьте dlib. Я думаю, что это здорово, но я работаю над этим, поэтому я склонен:)

Ответ 8

Мне нравится играть с cimg, его очень хорошая, простая в использовании библиотека изображений, хороша для общения с: p

http://cimg.sourceforge.net/

Ответ 9

Boost, но не продуктивная часть:)

Boost.Xpressive или как закодировать регулярные выражения в шаблонах!

Boost.MPL прольет новый свет на использование шаблона, вы получите более тонкий образец метапрограммирования шаблонов и углубитесь в тонкости SFINAE и вычитания шаблона.

Boost.Preprocessor прольет новый свет на использование и злоупотребление препроцессором. Это очень удобно при использовании шаблонов для генерации нескольких перегрузок функций и классов шаблонов (и на самом деле MPL основан на нем). Интерес несколько сокращается, хотя с появлением...

С++ 0x!

Новая стандартная библиотека со своими потоками!

Научитесь использовать std::future и std::function, откройте радость lambdas, синтаксис for на основе диапазона, ключевое слово auto!

С++ 0x имеет так много новых игрушек, что он почти чувствует себя как новый язык... и это также хорошая кисть ваших старых навыков и хороший способ остаться.

Ответ 10

Hiberlite:

спящий режим для SQLite, кто-то должен написать драйвер для mysql, используя OTL!

LLVM:

Динамически новый код JIT в ваш С++

Irrlicht 3D engine

Ответ 11

Я знаю, что вы ищете библиотеки, которые вы можете интегрировать в повседневную работу, но для домашнего проекта библиотека С++ Wiimote может привести к некоторым интересным проектам:

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

Ответ 12

Для развития игры - OGRE
Для разработки графического интерфейса - wxWidgets- CrossPlatform GUI Library

И обе библиотеки - OpenSource.

Ответ 13

Cinder и openFrameworks являются удивительными как они выразились, инструментарий для "творческого кодирования". Эти библиотеки, или, скорее, коллекция библиотек, охватывают все: от математики и сетей до 2D, 3d-графики, взаимодействия различных устройств ввода и т.д.

Ответ 14

В прошлый раз, когда я получал удовольствие, копаясь в чем-то, связанном с С++, был SWIG. Это генератор оболочки/интерфейса, который позволяет связать ваш код на С++ с Python.

Понимая, насколько просто использовать SWIG, это просветляет и довольно весело. Затем вы можете играть вокруг микширования библиотек Python и С++.

Удачи!

Ответ 15

Огре уже упоминалось. Если вы хотите перейти в 3D, то Panda3D Мне было легко учиться.

Player/Stage Project - это интерфейс управления роботом и библиотека моделирования. Вы можете имитировать роботов или запускать их на реальных роботах.