Namespace: was und wozu? DLL: was und wozu?



  • hallo!

    der liebe, gute, alte "namespace std". Was ist eigentlich ein Namespace, wozu braucht man sowas und wie macht man sowas? Ich denke von mir behaupten zu können nicht mehr einfach nur anfänger in c++ zu sein sondern mindestens fortgeschrittener anfänger (hey, das ist immerhin etwas!) und habe noch nie einen eigene namespace gebraucht...

    dasselbe gilt für dll's: ich hab in meinen programmen noch nie dll's verwendet. ok, meine art mit den textdateien wirkt nicht professionell, aber das liegt daran, dass ich nicht weiß, wie man dll's schreibt, was das überhaupt ist und wozu man sie braucht...!?

    kann mir da jemand helfen?

    cu, mi



  • hmmm

    dll, du kannst ja deine methoden somit "verstecken"

    klar kannst du auch immer eine

    .h und eine .cpp weitergeben. dann kann man aber leicht editieren usw.
    so bleibt halt dein source geschützt und geheim.

    namepaces: also ne richtig gute erklärung liefert dir google

    sind halt bibliotheken die dir verschiedene sachen anbieten

    std::
    boost::

    so kommt es zu keinen namenskonflikten. du kannst ja generell sagen

    alle fkt. sind std

    using namepace std;

    und dann trozdem was anderes mitverwenden im code

    z.b.

    boost::blabla

    oder du kannst immer das std und die anderen sachen davorschreiben

    oder du kannst sagen "nur cout"

    using std::cout; // so oder?

    also ich hab noch nie so grosse schwierigkeiten damit gehabt. du musst ja angeben können von welcher klasse die methode

    find kommt. in den reinen C++ sachen sind ja die ganzen klassen nicht drinnen.

    so kommt es zu keinen namenskonflikten

    std::string.find()

    oder

    blabla::string.find()

    wenn du nur string.find() sagst, kann der compiler schlecht schätzen



  • Namespace - Hervoragende Erklärung, wie ich finde 🙂



  • newkid++ schrieb:

    dll, du kannst ja deine methoden somit "verstecken"

    Bitte? Was meinst du mit verstecken?

    newkid++ schrieb:

    klar kannst du auch immer eine

    .h und eine .cpp weitergeben. dann kann man aber leicht editieren usw.
    so bleibt halt dein source geschützt und geheim.

    Nein, das ist nicht der Sinn und Zweck von DLL's. Das kannst du auch mit statischen Libs machen.

    newkid++ schrieb:

    sind halt bibliotheken

    Auch das stimmt nicht.

    @Mi
    DLL's sind dynamische Bibliotheken, im Gegensatz zu statischen Bibliotheken. Bei statischen Libs wird der Code immer mit in die Executable aufgenommen. Wenn du also x Executables hast, die jeweils Code aus einer statischen Lib benutzen, dann hast du auch den Code x mal. Das bläht uU die Sache ganz schön auf. Bei DLL's hingegen wird der Bibliothekscode in eine separate Executable (.dll) ausgelagert. Jedes Programm, welches Code aus der Lib braucht, dockt dort an und lässt entsprechende Funktionen ausführen. Das spart nicht nur Speicher, sondern hat auch andere Vorteile. Wenn zB ein Fehler in der Lib gefixt wird, muss nur diese neu compiliert werden. Alle Programme, die darauf zugreifen, bleiben unverändert.

    Namensräume werden für die Vermeidung von Namenskonflikten verwendet. Klingt komisch, ist aber so.



  • ups mit dll hast natürlich recht *hust*

    mit "sind halt bibliotheken" meinte ich die

    namensräume

    wie std oder boost oder meinnsm die verschienene sachen anbieten. die dll waren damit nicht gemeint

    hmm das prinzip von dll hast du gut erklärt, nur habe ich mal gehört, das WinXP z.b. doch nicht nur eine dll reinläd wo die programme code nehmen, sondern

    die dll quasi kopieren und dann für jedes programm dann anbieten ( dynamisch allerdings )

    kann das sein?

    sprich

    eine dll

    ein programm = eine dll im speicher

    dann greifen 3 drauf zu = 3 im speicher

    kann eigentlich jedes OS handhaben wie es will, ne?


Anmelden zum Antworten