C++ Quellcode-Dateien

  • C++

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    C++ Quellcode-Dateien

    Hallo und guten Abend!

    Da wir zur Zeit in der Berufsschule C++ druchnehmen(*hust hust*) und mir -auf gut Deutsch- arschlangweilig ist, weil alles, was da durchgenommen wird, man alles schon kennt, hab ich mir ma in der Zwischenzeit auf die Suche nach den C++-Codedateien gemacht. Dass im Compiler-Ordner unter C:\Program Files (x86)\<name-des-compilers>\MinGW\include die Headerdateien liegen ist mir schon klar. Aber wo sind eigentlich die *.cpp Dateien, in denen meinetwegen die String-Klasse definiert ist?

    Hab den ganzen Ordner auch nach *.cpp oder *.c Datein abgesucht...nix gefunden. Schulkollege dachte ich meinte die Windows-Code Dateien und dass die natürlich ned von MS rausgegeben werden(weil da sooo viele Fehler drinnen sind :D). Als ich ihm dann aber gesagt habe, was ich wirklich meine, sagte er, die liegen irgendwo "im Compiler".

    Hat er da Recht? Liegen die in einem Ordner den man ned finden kann? Sind die Datein schon kompilliert, sodass man se ned lesen kann?

    Danke schon ma für die Antwort

    Lg Radinator :D
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Also liegen die ganzen string.cpp, io.cpp, weiß-der-geier.cpp schon kompilliert iwo rum oder wie ? :D
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    kompiliert natürlich. Vlt als (gnu)stl.so oder stlport.so oder .a - kp wie die eingebunden werden aber ich vermute mal eher shared...
    Oder für stdc++ ich weiß nicht genau, welche Klassen in welcher Library zu finden sind.
    ftp.gwdg.de/pub/misc/gcc/
    da kannst sicher die Dateien finden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    Radinator schrieb:

    Aber wo sind eigentlich die *.cpp Dateien, in denen meinetwegen die String-Klasse definiert ist?
    Die lidegen kompiliert in ieiner LIB + DLL vor.
    Mit dem einbinden der Header kann das Programm drauf zu greifen, und wenn Du dem Linker sagst, welche Libs er nehmen soll, kompiliert das.
    Wenn da DLLs vorliegen, musst Du sie "händisch" laden, damit der Compiler / Linker keine Fehler melden.
    ----
    Kommt Dir dieses Prozedere bekannt vor? ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Die lidegen kompiliert in ieiner LIB + DLL vor.
    Mit dem einbinden der Header kann das Programm drauf zu greifen, und wenn Du dem Linker sagst, welche Libs er nehmen soll, kompiliert das.

    So ists nicht. Die Stdlib ist teilweise komplett in Headern definiert, weils halt etliche tausend Templates beinhaltet, ansonsten liegen die Sachen aber anders vor. Im Normalfall hat eine PE unter Windows, die nur die Standardbilbiothek nutzt nur eine Abhängigkeit: kernel32. Der benötigte Quellcode landet dann einfach in der PE.

    Mach dir mal eine kleine "Hello World-Konsole" und zerleg die komplett im Disassembler. Da siehst du wie diese aufgebaut ist, inkl. aller Funktionen, Abhängigkeiten etc.

    Gonger96 schrieb:

    Die Stdlib ist
    nicht im Verzeichnis

    Radinator schrieb:

    C:\Program Files (x86)\<name-des-compilers>\MinGW\include
    Die Philosophie von C++ ist so, dass ein Header mit Deklarationen genügt, das Programm kompilieren zu können.
    Linken kann es erst, wenn die dazugehörigen Implementationen da sind.
    Diese Implementationen können sein
    1. in Libs (werden drangelinkt),
    2. in DLLs (liegen neben der exe oder in einem PATH-Verzeichnis oder werden von der Exe in einem bekannten Pfad gefunden),
    3. in kommunizierenden C++-Dateien (gehören zum Kompilat),
    4. in den Headern selbst (gehören zum Kompilat).
    So, das müsste jetzt eine vollständige Liste sein. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Gonger96 schrieb:

    Quelloffen
    Wenn Du mal fix was mit C++ machen musst, ist das schon erforderlich zu wissen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Gonger96 schrieb:

    Wozu auch?
    Weil ich ggf. wissen muss, welche LIB ich dem Linker "zum Fraß" vorwerfen muss. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Gonger96 schrieb:

    oder ;) ?
    Sag ich doch.
    Also Ja.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Gonger96 schrieb:

    Quelloffen
    Wenn Du mal fix was mit C++ machen musst, ist das schon erforderlich zu wissen.


    RodFromGermany schrieb:

    Gonger96 schrieb:

    Wozu auch?
    Weil ich ggf. wissen muss, welche LIB ich dem Linker "zum Fraß" vorwerfen muss. ;)

    Dir ging es doch um die Source, nicht um Libs. Das man Libs braucht um Dll Symbole aufzulösen oder nur statische Libs nutzen zu können ist ja klar.

    Gonger96 schrieb:

    Ich brauch nur den Header einzuschließen, dann kann ich direkt kompillieren.


    Also wenn ich n Programm schreiben will, dass auf eine C++-DLL zugreift, dann muss ich mir nur die Header-Dateien für diese DLL besorgen, die dann einbinden und kann dann proggen oder wie?
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    Header-Dateien für diese DLL besorgen
    Jou.
    Wenn Du noch eine Lib dazu hast, kannst Du die Lib einbinden und feddich (das Programm startet dann nicht, wenn dei DLL nicht da ist).
    Wenn nicht, musst Du die DLL über LoadLibrary laden (das Programm startet immer).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Wenn Du noch eine Lib dazu hast, kannst Du die Lib einbinden und feddich (das Programm startet dann nicht, wenn dei DLL nicht da ist).


    Geht halt darum, ich hab mir MAGIX Video Deluxe gekauft und dabei ist halt das Problem, dass die eine hälfte .NET ist und der Rest nicht-.NET(ich geh ma von C++ aus). Ich aber evlt auf die API zugreifen will(Evtl ma nen Wrapper für ne Multimedia DLL, zum Frames bearbeiten oder dergleichen). Aber wenn ich das mit ohne Header mit LoadLibary auch machen kann, wäre super :D
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell