Was ist eine Library



  • Simple Frage.
    Sind es include-Dateien, oder hat es etwas damit zu tun, dass man z.B. bei Socket-
    Programmierung die ws2_32.lib mit einbinden muss.
    Es scheint ja einen Unterschied zwischen *.h und *.lib Dateien zu geben.



  • Man hoert ja dauernd irgendwas von boost,ACE,POSIX,VCL,MFC,und x weitere.
    Was ist das alles?



  • Frage: schrieb:

    Simple Frage.
    Sind es include-Dateien, oder hat es etwas damit zu tun, dass man z.B. bei Socket-
    Programmierung die ws2_32.lib mit einbinden muss.
    Es scheint ja einen Unterschied zwischen *.h und *.lib Dateien zu geben.

    beides gehört dazu.
    ne lib ist ne bibliothek. ne sammlung von definitionen (klassen, funktionen, konstanten und so).
    davon wandert vieles ja in *.cpp-dateien und die deklarationen (und wenige definitionen) ind die *.h-dateien.
    *.h brauchste, um die lib benutzen zu können.
    für die *.cpp gibts nen trick. der lib-hersteller kann die *.cpp alle in ner vorcompilierten *.lib zusammenfassen und braucht dir nicht alle *.cpp einzeln zu geben. das macht bei dir das benutzen schneller und der hersteller läßt sich nicht in den code guchen.
    aber die *.h-dateien zu den ganzen *.cpp-dateien muß er dir schon geben. auch die fasst er gerne zusammen, indem er aus den ganen *.h eine große *.h zusammenkopiert.



  • Frage: schrieb:

    Man hoert ja dauernd irgendwas von boost,ACE,POSIX,VCL,MFC,und x weitere.
    Was ist das alles?

    boost: die abgefahrendsten (miss-)verwendungen von c++ in einer lib. saupraktische angelegenheit, aber fast nur besoffen zu ertragen, wenn man sich dafür interessiert, wie es von innen ausseht. sind nur sachen drin, die jedes bs hat (z.B. filesystem) und alles, was man unabhängig vom bs kann (z.B. regexps).
    ACE: sind wrapper um sachen, die jedes ordentliche bs hat. sockets, mikrosekundentimer (eher nano), semaphoren und alles halt. und nen coolen webserver.
    posix: ka. ist afair nur ne schnittstellenbeschreibung, wie man auf manche bs-sachen zugreifen könnte. benutzt ne software auf asia-linux 3.12 nur posix-kompatible aufrufe, kann es auch auf tante ernas toaster laufen, falls der die verwendeten posix-funktionen auch alle anbietet.
    vcl: borlands saugeile klickibunti-alternative zu microsofts schrecklicher klickibunti-mfc. viel "objektorierntierter" und so.
    mfc: microsofts lib, mit der man erheblich leichter klickibuntis bauen kann, als nur mit der winapi.

    vcl ist schon lange tot. wie borland auch.
    mfc ist tot, ms baut auf .net und so.
    posix: ka.
    ace: kenne keinen, der es (noch) benutzt, aber ist trotzdem eine der schönsten libs, finde ich.
    boost: sogar ich habe inzwischen boost drauf. die lib mischt sich nicht ein! will man BOOST_STATIC_ASSERT benutzen, inkludier man <boost/static_assert> und hat nur das, nix anderes. also enorm höflich von ihr. man kann langsam eintauchen und stück für stück mehr benutzen, bis man dann ganz abhängig ist. ich würde auch sagen, daß bald jeder compiler boost dabei hat, weil's einfach prakisch ist.



  • Und welche Libraries sind sonst noch empfehlendswert?
    Und wo liegen die einsatzgebiete von einzelnen?



  • Ich habe mal eine ganz spezielle Frage: Die Endung hpp, so nehme ich an, ist ja die typische Endung für C++-Headerdateien. Warum wird trotzdem die Endung h verwandt?



  • Es gibt nicht *die* typische Endung. .h, .hpp, .hh, .hxx, .H sind alle schonmal gesehen worden.



  • Ruhollah schrieb:

    Ich habe mal eine ganz spezielle Frage: Die Endung hpp, so nehme ich an, ist ja die typische Endung für C++-Headerdateien. Warum wird trotzdem die Endung h verwandt?

    ich nehme nur .h und ich verwende nur c++.
    in der .h darf ja stehen #ifdef __CPP__ und so. es ist ja normal, auch mal ne <string.h> in c++ zu inkludieren.
    man hat mal angenommen, es sei sinnvoll, zu trennen. die dos-leute gingen nach .hpp (watcom) und die manche linuxer nach (.h++). vor allem h++, weil dos das nicht schafft, hab ich manchmal den eindruck gehabt.
    aber bewährt hat sich nix. es gibt keinen technischen grund für ne trennung.
    nur eines ist unpraktisch, gar keine endung zu nehmenb (wie die standard-lib), weil editoren gerne an der endung erkennen wollen, welches syntax-highlighting angesagt ist.
    bist mit .h oder .hpp an sich auf der sicheren seite und mit anderen sachen nicht ganz so (nur, was fremdprodukte wie editoren oder windows angeht). dem compiler ist es egal. #include macht ja nur ne text-ersetzung.



  • volkard schrieb:

    posix: ka. ist afair nur ne schnittstellenbeschreibung, wie man auf manche bs-sachen zugreifen könnte. benutzt ne software auf asia-linux 3.12 nur posix-kompatible aufrufe, kann es auch auf tante ernas toaster laufen, falls der die verwendeten posix-funktionen auch alle anbietet.

    POSIX sind verschiedene Standards, die das Interface eines (Unixoides) OS beschreiben. Wobei eben eine C API definiert wird für Sockets etc. aber auch die Shell und andere Tools werden standardisiert.

    volkard schrieb:

    boost: sogar ich habe inzwischen boost drauf. die lib mischt sich nicht ein! will man BOOST_STATIC_ASSERT benutzen, inkludier man <boost/static_assert> und hat nur das, nix anderes. also enorm höflich von ihr. man kann langsam eintauchen und stück für stück mehr benutzen, bis man dann ganz abhängig ist. ich würde auch sagen, daß bald jeder compiler boost dabei hat, weil's einfach prakisch ist.

    teile von boost werden wohl mit C++0x in den C++ Standard einfließen und Teil der Standard Library.

    Ich finde boost extrem gut designed. Leider fehlt es boost IMHO noch an folgenden Librarys

    boost::socket - Eine Socket Library eben; ist wohl auf dem Weg und kommt in den nächsten 10 oder 100 Jahren 😉 Zumindest gibt es wohl schon Code (im CVS) und ein Wiki zur Diskussion des Designs (hey, dass erinnert mich an mein eigenes Widget-Projekt ;))
    boost::metal - Eine Library zum arbeiten mit Meta Languages, wie XML, SGML und YAML
    boost::db - Eine Library zur Datenbankanbindung, damit man mal endlich diese ekelhaften ODBC und proprietären Datenbankschnitstellen nicht mehr beherschen muss

    volkard schrieb:

    weil editoren gerne an der endung erkennen wollen, welches syntax-highlighting angesagt ist.

    jo und bei .h nehmen die meisten C an und dann ist nichts mit C++ Schlüsselwörter Highlight und co. Deswegen nehm ich gerne .hh oder .hpp, weil die Editoren dann schon gleich sehen, dass es sich um C++ handelt.

    Ach so 🙂 Danke Volkard! schrieb:

    Und welche Libraries sind sonst noch empfehlendswert?

    das kommt darauf an, was man machen will. Praktische Ergänzungen zum Standard C++ sind aber folgende Librarys

    Blitz++ - eine schnelle Library für wissenschaftliche Berechnungen
    CommonC++ - kann man ungefähr mit ACE vergleichen
    Loki - Implementierung einiger Design Patterns. Die meisten findet man auch in boost
    More - irgend wie eine Mischung aus boost und Blitz++ nur mit noch einigen Features zur Code Generierung (letzteres aber wohl nur mit dem GCC)



  • Jetzt hab ich aber auch noch ein paar Fragen.

    1. Was ist 'C++0x'? Hab mir der Suche nix gefunden. Klingt aber vielversprechend:)

    2.Was ist Qt und was ist dieses Generic++, dass immer auf diesem Forum auftaucht?

    3.MFC und VCL/CLX sind doch IDE's, oder sind solche IDE's das gleiche wie POSIX,
    boost etc., also das gleiche wie Libraries?

    Eine Library zur Datenbankanbindung, damit man mal endlich diese ekelhaften ODBC und proprietären Datenbankschnitstellen nicht mehr beherschen muss

    Also ist ODBC auch eine Library zur Datenbankanbindug.

    5.Sind DirectX und OpenGL auch Libraries?

    MfG

    Raptor



  • Raptor schrieb:

    1. Was ist 'C++0x'? Hab mir der Suche nix gefunden. Klingt aber vielversprechend:)

    Der kommende C++-Standard. Man nimmt an, dass er noch dieses Jahrzehnt erscheint, aber will sich nicht konkret festlegen, deshalb 0x

    2.Was ist Qt und was ist dieses Generic++, dass immer auf diesem Forum auftaucht?

    Qt ist eine GUI-Bibliothek von Trolltech. Generic++ kenn ich nicht. Wenn das hier auftaucht, dann doch eher in Werbebannern, oder?

    3.MFC und VCL/CLX sind doch IDE's, oder sind solche IDE's das gleiche wie POSIX,
    boost etc., also das gleiche wie Libraries?

    MFC, VCL und CLX sind Bibliotheken und Frameworks. Eine IDE ist eine Integrierte Entwicklungsumgebung, also sowas wie Visual C++. Editor, Compiler, Debugger, Projektverwaltung etc. alles in einem.



  • Raptor schrieb:

    Sind DirectX und OpenGL auch Libraries?

    Das sind APIs (Application Programming Interfaces = Schnittstellen zur Anwendungs-Programmierung) und beinhalten i.d.R. mehrere Bibliotheken (zumindest DirectX). Das kommt aber sicher darauf an, wie weit man den Begriff fasst...





  • Erstmal sorry das ich das nochmal aufwärme schmeckt garantiert nicht mehr : P.

    Also diese "VCL" und "MFC", stellen einem WINAPI funktionen zur verfügung die einfacher zu handhaben sind ,also sie ersparen das komplizierte direkte Arbeiten mit der WINAPI richtig?

    [quote="volkard"]

    Frage: schrieb:

    vcl ist schon lange tot. wie borland auch.
    mfc ist tot, ms baut auf .net und so.

    Das hört sich danach an das es schwachhsinn ist sich mit diesen beiden Sachen noch auseinander zu setzen.
    Gibt es alternativen dazu? Die nicht schon tot oder im austerben sind?





  • Wenn du verstehen willst, wie MFC und WinAPI arbeiten, kannst du hier einen Blick riskieren:
    http://www.henkessoft.de/api1.htm
    http://www.henkessoft.de/mfc_einsteigerbuch_kapitel1.htm



  • CarstenJ schrieb:

    Hallo,
    ja, die gibt es:
    http://www.c-plusplus.net/forum/viewtopic.php?t=81596

    Ich habe mir VCF ausgesucht und heruntergeladen.

    ich kann die beispiel programm mit devcpp öffnen nur will er die nicht compliieren.

    Ich versuche es jezt schon seit Stunden.

    Ich habe unter Compiler Options im einen zusätzlichen pfad gegeben unter dem er nach include dateien suchen soll. aber irgend wie haut das nicht ganz hin.

    Aus der Dokumentation werde ich auch nicht wirklich schlau weil die da mit Microsoft Visual C++ arbeiten und das habe ich leider nicht.



  • Hallo,

    VCF kenn ich selber jetzt gar nicht. Aber vielleicht hilft dir das weiter:
    http://vcf.sourceforge.net/forums/index.php?showtopic=30&pid=67&mode=threaded&show=&st=&#entry67



  • hmpf. . viel schlauer werde ich dadurch nicht.

    Seltsam ist nur das die header dateis die includiert wurde sachen beinhalten die unbekannt sind .

    Das teil ist mir irgendwie zu hoch... O_o

    Kann mir jemmand ein solches toolkit empfehlen welches funktioniert.

    Einfacher brauch es nicht zu sein. Ich mein VCF das waren nur header dateien die eingeunden werden mussten. Nur Problematisch ist es wenn der Compiler teilweise dateien nicht findet. Entweder ist das ein bug oder ich bin unfähig...

    *seufzt*



  • Hallo,

    ich kann dir das empfehlen:
    http://www.wxwindows.org/devcpp.htm

    Es imho weiter verbreitet als VCF und dort gibts ne direkte Anleitung für die Nutzung mit DevCpp. Das habe ich selbst schon getestet und es funktioniert.

    gtkmm find ich persönlich ganz gut, aber inwiefern es da Unterstützung für den Dev-Cpp gibt weiss ich nicht.

    Ich mein VCF das waren nur header dateien die eingeunden werden mussten.

    Das bezweifle ich jedoch stark. Normalerweise müssen da auch noch irgendwelche Librarys zugelinkt werden. Die o. a. Anleitung zu wxWidgets sollte aber ausreichen. Wenn nicht, solltest du mal die Fehlermeldungen posten, sonst kann man immer nur spekulieren.


Anmelden zum Antworten