2009-07-20 7 views
2

Kennt Sombebody eine C++ - Bibliothek für den Zugriff auf verschiedene Betriebssystem-APIs?Gibt es eine Betriebssystem-API-Wrapper-Bibliothek für C++?

Ich denke über einen Wrapper für den Zugriff auf Betriebssystemspezifische Funktionen. Etwas wie:

osAPI.MessageBox(); // ruft MessageBox() in Win32, das entspricht in Mac OS Linux etc ...

Da ich denke, dass es schwer ist, denn jetzt diesen für verschiedene Betriebssysteme zu realisieren, wäre es auch in Ordnung, einen netten C++ Wrapper-Klasse haben für WinAPI.

+0

Die von Ihnen beschriebenen Funktionen sind nicht die Betriebssystemebene (die die Gerätetreiber usw. verarbeitet). Dies sind die Fenster- (oder Anzeige-) Ebene, die eine Ebene über dem Core-Betriebssystem ist. –

+0

Ich habe mich nur für MessageBox entschieden, weil es mir zuerst in den Sinn kam. Im Allgemeinen denke ich nicht (nur) über GUI-Funktionen, ich denke über typische OS-API-Funktionen wie Prozessmanagement, Netzwerkkram usw.(Nicht-GUI-Zeug in der ersten Zeile) – Inno

Antwort

1

-Boost bietet Bibliotheken für die Vernetzung (Boost.Asio), Fäden (Boost.Thread), Zeit, Datum, Dateisystem-Traversal, gemeinsam genutzten Speicher, Speicherdateien abgebildet usw.

ACE auch Abstraktionen für die Vernetzung hat, Threads, Zeit, Dateisystem-Zeug, Shared Memory, etc.

AFAIK, weder GUI Abstraktionen noch DB Abstraktionen.

Andere haben Qt, wxWidgets und so weiter erwähnt.

8

Ich denke, Sie suchen nach Trolltech's Qt C++ Framework.

Es ist eine plattformübergreifende C++ - Bibliothek für GUI und so ziemlich alles andere plattformübergreifend.

Und ab der neuesten Version ist es frei für den kommerziellen Gebrauch zu verwenden.

+0

Behandelt QT auch Nicht-GUI-OS-API-Sachen wie zum Beispiel eine Liste laufender Prozesse? – Inno

+0

Anscheinend wird die Prozessliste nicht von QT abgedeckt. (http://lists.trolltech.com/qt-interest/2006-10/msg01222.html) Vielleicht haben sie eine Lösung in einer neueren Version hinzugefügt? Ich kann auch keinen Weg finden, es in wxWidgets zu bekommen. – Kieveli

+0

Sie könnten immer auf #ifdef _WIN32 zurückgreifen, wenn es benötigt wird –

1

MFC Art tut dies unter Windows, ist aber nicht die einfachste zu verwenden. Eine plattformübergreifende C++ - Bibliothek finden Sie unter QT. Sie ist am besten als GUI-Toolkit bekannt, enthält jedoch portable APIs zur Unterstützung vieler Systemdienste wie Threading, Datenbankkonnektivität und E/A.

3

wxWidgets kommt sehr empfohlen von ein paar Freunden, die es benutzt haben.

0

Eine weitere plattformübergreifende C++ - Bibliothek ist Mozillas XPCOM. Es ist die plattformübergreifende Bibliothek, die von Firefox und einer Reihe anderer Projekte verwendet wird.

0

Das Nokia QT ist die beste Wahl, wenn Sie eine breite Palette von plattformübergreifenden Funktionen benötigen. Der Nachteil ist jedoch, dass Sie seinen Signal/Slot-Mechanismus lernen müssen, Sie müssen sein eigenes qmake-Tool verwenden, und es ist nicht zu freundlich mit der STL (Sie müssen lernen, alle QT-Container zu verwenden).

Wenn Sie nach etwas einfacherem für GUI-Entwicklung suchen, dann WxWidgets wäre eine viel bessere Wahl.

+0

es funktioniert gut mit STL. Alle Qt-Container verfügen über STL-Style-Iteratoren. Außerdem muss jeder Qt-Container Methoden für die Konvertierung von/zu STL-Containern enthalten. –

1

Überprüfen Sie Daynix DUSIX. Es ist ein Modul, das allgemeine Systemaufrufe abstrahiert und eine einzige Schnittstelle für Linux- und Windows-Benutzerraumanwendungen und Kernelmodule bereitstellt.

Siehe here und here.