Mit C++ programmieren: Die 12 besten Libraries

Diese 12 C++-Bibliotheken machen Softwareentwicklern das Leben leichter.


Foto: Roman Samborskyi – shutterstock.com

C++ ist eine allgemeine Systemprogrammiersprache, die im Jahr 1979 entwickelt wurde, inzwischen also mehr als vier Dekaden auf dem Buckel hat. Dennoch ist C++ weit davon entfernt, an Bedeutung zu verlieren und rangiert in diversen Beliebtheitsindizes für Programmiersprachen in der Spitzengruppe.

Die Akzeptanz von C++ manifestiert sich auch in der breiten Unterstützung, die die Programmiersprache durch die Anbieter von IDEs, Editoren, Compilern, Test-Frameworks und anderen Tools erfährt. Ein weiterer Vorzug von C++: Entwickler können auf eine Vielzahl hervorragender Bibliotheken zurückgreifen, die dabei unterstützen, C++-Applikationen zu coden.

Wir haben die zwölf besten C++-Libraries, auf die sich Softwareentwickler verlassen, für Sie zusammengestellt:

Active Template Library

Microsofts Active Template Library (ATL) ist ein Satz von C++-Klassen, um COM-Objekte (Common Object Model) zu erstellen, die entsprechende Funktionen wie Dual Interfaces. Connection ÜPoints oder ActiveX-Steuerelemente unterstützen. ATL ist mit der Visual Studio IDE verfügbar und kann verwendet werden, um Single-Thread-, Apartment-Modell- oder Free-Thread-Modell-Objekte zu erstellen.

Asio C++ Library

Die Asio C++-Bibliothek kommt für Netzwerk- und Low-Level-E/A-Programmierung zum Einsatz und bietet ein konsistentes asynchrones Modell. Asio bietet grundlegende Bausteine für Concurrency, C++-Netzwerke und andere Arten von E/A und kommt in diversen Applikationen zum Einsatz – von Smartphone-Apps und -Games bis hin zu hochgradig interaktiven Websites und Echtzeit-Transaktionssystemen.

Zu den Asio-Projekten zählen etwa die WebSocketPP-Bibliothek und der DDT3-Remote-Debugger für die Programmiersprache Lua. Asio ist als Open-Source-Code unter der Boost Software License verfügbar und wird von Linux, Windows, MacOS und FreeBSD unterstützt.

Boost

Boost bietet von Experten begutachtete, portable C++-Quellbibliotheken, die mit der C++-Standard-Library zusammenarbeiten. Boost-Bibliotheken sind für ein breites Spektrum von Anwendungen konzipiert. In der Sammlung befinden sich JSON-, Mathematik-, Multi-Index-, Dateisystem- und Geometrie-Bibliotheken. Boost funktioniert mit den meisten modernen Betriebssystemen, einschließlich Linux, Unix und Windows. Linux- und Unix-Distributionen wie Debian, Fedora und NetBSD enthalten bereits vorgefertigte Boost-Pakete.

Cinder

Diese quelloffene Bibliothek ist für kreatives Coding mit C++ gemacht. Sie ist nützlich für Audio-, Computational-Geometry-, Grafik- und Videoanwendungen, unterstützt plattformspezifisches Windowing und Event-Handling, I/O-Abstraktion und bringt darüber hinaus eine integrierte API für XML- und JSON-Parsing mit.

Die Bibliothek wurde um idiomatische C++ 11-Funktionen wie shared_ptr herum entwickelt und kommt mit zahlreichen Beispielen. Cinder unterstützt MacOS, iOS, Linux, Windows und Windows UWP.

Eigen

Eigen ist eine C++-Vorlagenbibliothek für lineare Algebra, einschließlich Matrizen, Vektoren, numerische Solver und verwandte Algorithmen. Dabei werden alle Matrixgrößen unterstützt, von kleinen, festen Matrizen bis hin zu beliebig großen und dichten. Um die Geschwindigkeit zu erhöhen, bietet Eigen Expression Templates, die auf intelligente Weise temporäre Elemente entfernen und eine “Lazy Evaluation” ermöglichen.

Eigen ist unter der Mozilla Public License 2 frei nutzbar. Die Testsuite für Eigen wurde mit vielen Compilern kombiniert, um optimale Zuverlässigkeit zu gewährleisten.

FloatX

Bei FloatX handelt es sich um eine reine Header-Bibliothek, um Fließkommatypen mit niedriger Genauigkeit zu emulieren. Zwar ist FloatX nativ mit C++-Compilern kompatibel, kann aber auch von anderen Programmiersprachen wie Python oder Fortran aufgerufen werden.

FloatX implementiert ein Superset der FlexFloat-Funktionalitäten in C und beinhaltet C++-Wrapper. Das Projekt ist aus der Open Transprecision Computing Initiative hervorgegangen und steht unter der Apache License 2.0 zur freien Verfügung.

OpenCV

Diese Bibliothek für Computer Vision und Machine Learning ist nativ in C++ geschrieben und ebenfalls unter der Apache License 2.0 verfügbar. OpenCV wurde entwickelt, um eine gemeinsame Infrastruktur für Computer-Vision-Anwendungen bereitzustellen und deren Nutzung in kommerziellen Produkten zu beschleunigen.

Mit mehr als 2.500 optimierten Algorithmen für Gesichts- und Objekterkennung, Objektklassifizierung, 3D-Modellextraktion, Bildsuche und vielem mehr hat OpenCV eine stattliche Community ausgebildet (ca. 47.000 Mitglieder). Die Bibliothek bietet C++-, Java-, Python- und Matlab-Schnittstellen und unterstützt Windows, Linux, Android und MacOS. CUDA- und OpenCL-Schnittstellen befinden sich in der Entwicklung.

Poco C++ Libraries

Die plattformübergreifenden Portable-Components-Bibliotheken sollen es vereinfachen, mit C++ Internet- und Netzwerkanwendungen zu programmieren, die vom Desktop und Server über das Smartphone bis hin zum IoT-Gerät laufen. Die Bibliotheken können auch genutzt werden, um Microservices mit REST-APIs aufzubauen – beispielsweise für Machine-Learning- oder Analytics-Zwecke. Die Poco-Bibliotheken ähneln vom Konzept Java Class Library, Microsofts .NET Framework oder auch Apples Cocoa.

Entwickler können Poco-Bibliotheken verwenden, um Anwendungsserver in C++ zu erstellen, die mit SQL-Datenbanken, Redis oder MongoDB kommunizieren oder um Software für IoT-Geräte zu entwickeln, die mit Cloud-Backends kommuniziert. Zu den Funktionen der Bibliotheken gehören ein Cache-Framework, HTML-Formularverarbeitung, ein FTP-Client für die Übertragung von Dateien sowie ein HTTP-Server und -Client. Die Poco-Bibliotheken sind kostenlos unter der Boost Software License erhältlich.

Velox

Velox ist eine vektorisierte,embeddable Ausführungsbibliothek für OLAP-Systeme. Die Library ist dazu gedacht, Datenverarbeitungssysteme und Abfrage-Engines zu optimieren. Das Projekt wurde als internes Entwicklungsprojekt bei Facebook im Jahr 2020 begonnen und dann als Open-Source-Projekt veröffentlicht.

Zu den Komponenten gehören ein High-Level-Typisierungssystem, ein spaltenförmiges Speichermodul, Funktionspakete und Netzwerk-Serializer.

Windows Template Library

Die ursprünglich aus dem Hause Microsoft stammende Windows Template Library (WTL) ist seit 2004 eine Open-Source-Bibliothek, um leichtgewichtige Windows-Anwendungen und -UI-Komponenten zu erstellen. Als Alternative zum Microsoft-Foundation-Classes-Toolkit erweitert WTL die ATL und bietet eine Reihe von Klassen für Steuerelemente, Dialoge, Rahmenfenster und GDI-Objekte.

Wt

Mit dieser Web-GUI-Bibliothek in modernem C++ können Softwareentwickler interaktive Web-UIs mit Widgets erstellen, ohne dabei in JavaScript schreiben zu müssen. Als serverseitige Lösung übernimmt Wt Request Handling und Page Rendering, bietet integrierte Sicherheitsfunktionen, PDF-Rendering, ein 2D- und 3D-Painting-System, eine objektrelationale Mapping-Bibliothek, eine Charting-Bibliothek und ein Authentifizierungs-Framework. Die Kernbibliothek ist quelloffen und bietet ein hybrides Single-Page-Framework, das auf Linux, Unix oder Windows eingesetzt werden kann. Wt wurde von Emweb entwickelt und ist mit HTML5- und HTML4-Browsern sowie mit einfachen HTML-Benutzeragenten kompatibel. Außerdem kann Wt mit JavaScript-Bibliotheken von Drittanbietern integriert werden.

Mit Wt wird eine Anwendung als eine Hierarchie von Widgets definiert, die von allgemeinen Widgets wie Drucktasten bis hin zu spezialisierten wie einem ganzen Blog-Widget reicht. Der Widget-Baum wird als HTML/JavaScript im Browser gerendert. Wt ist sowohl als quelloffene als auch als komerzielle Version verfügbar.

Yocto/GL

Yocto/GL ist eine Sammlung von kleinen C++17-Bibliotheken, um physikalisch-basierte Grafikalgorithmen zu erstellen. Sie ist in einem datenorientierten Stil geschrieben, um die Entwicklung zu erleichtern, und in kleine Bibliotheken aufgeteilt, um die Navigation im Code zu vereinfachen. Die Daten werden in einfachen Strukturen gespeichert und mit freien Funktionen oder direkt angesprochen.

Yocto/GL enthält den Code des PCG-Zufallszahlengenerators. Die Entwickler von Yocto/GL bevorzugen einen funktionalen Ansatz anstelle eines objektorientierten Ansatzes und freie Funktionen gegenüber Klassenmethoden. Funktionen und Daten werden in Schwester-Namespaces innerhalb des Yocto-Namespaces definiert. Yocto/GL ist unter der MIT-Lizenz verfügbar – ein C++17-Compiler ist erforderlich. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation InfoWorld.

Original Post>