Frage zur Release Version



  • Hallo zusammen,

    ich hab' eine Frage.

    Und zwar:
    Wenn ich mit C++ ein Programm schreibe (ich benutze Code::Blocks), wie mache ich es am Ende fertig für den Endbenutzer?

    Also Release-Version auswählen (Build-> Select Traget -> Release) und dann "Run&Build" an den Compiler geben... richtig?

    Daraufhin bekomme ich in dem Projekt-Ordner in "Bin/Release/" eine Exe und in "Obj/Release" meine Cpp-Dateien als O-Dateien (Objekte, nehm ich mal an...).

    Jetzt hab ich die Exe einfach mal in einem anderen Ordner gesetzt und dort alleine gestartet und ging auch 😕
    Müssten die O-Dateien nicht im gleiche Ordner liegen?

    Kann mir das jemand erklären, wie man eine Endnutzer-Version bastelt?
    Danke schon einmal! 🙂



  • Nur die exe.
    Hast alles richtig gemacht.



  • Müssen die Klassen, die ich für ein Programm schreibe, nicht irgendwie als Objekt-Dateien dem Endprogramm beiliegen?
    Die Exe-Datei kann doch nicht sämtlichen Code beinhalten...
    Sonst würde doch einem Spiel, das ich im Laden kaufe und mit C++ programmiert wurde, nur eine Exe-Datei beiliegen (plus Soundfiles, etc, die aufgerufen werden...)



  • Barcelona schrieb:

    Spiel, das ich im Laden kaufe und mit C++ programmiert wurde, nur eine Exe-Datei beiliegen (plus Soundfiles, etc, die aufgerufen werden...)

    Du hast es erfaßt. Und 3D-Modellfiles und ein Installer und ein "Kopierschutz"-Rootkit und DirectX-Installationsdateien und eine Demo für ein anderes Spiel und das Handbuch und noch 2G Zufallsdaten, damit die DVD voll erscheint.


  • Mod

    volkard schrieb:

    Barcelona schrieb:

    Spiel, das ich im Laden kaufe und mit C++ programmiert wurde, nur eine Exe-Datei beiliegen (plus Soundfiles, etc, die aufgerufen werden...)

    Du hast es erfaßt. Und 3D-Modellfiles und ein Installer und ein "Kopierschutz"-Rootkit und DirectX-Installationsdateien und eine Demo für ein anderes Spiel und das Handbuch und noch 2G Zufallsdaten, damit die DVD voll erscheint.

    Erinnert sich noch jemand an die alten Blizzardspiele (ca. die Warcraft2/Diablo1 Ära)? Die hatten tatsächlich 650 MB Executables auf den CDs in denen dann alles gepackt war.



  • Also wird der gesamte Code, den ich schreibe, egal wie groß, in die Exe verpackt, korrekt?
    Wozu sind denn dann die .o-Dateien im "Obj/Release"-Ordner gut?



  • Die entstehen bei dem Vorgang, der Compiler baut obj und der Linker bastelt sie zusammen. Deswegen compiled der Compiler auch imemr nur das neu was sich geändert hat weil er beim rest noch aktuelle Dateien da hat.



  • Xebov schrieb:

    Deswegen compiled der Compiler auch imemr nur das neu was sich geändert hat weil er beim rest noch aktuelle Dateien da hat.

    Das machen bestenfalls die Buildsysteme, z.B. make. Der Compiler übersetzt immer eine Übersetzungseinheit (eine cpp-Datei mit den eingebundenen headern usw.) in Objektcode, d.h in eine obj-Datei. Der Linker packt widerum alles zusammen in eine .exe Datei.
    Bei den angesprochenen Computerspielen und anderen Programmen sind häufig noch DLLs dabei, die auch Programmcode enthalten.



  • SeppJ schrieb:

    Erinnert sich noch jemand an die alten Blizzardspiele (ca. die Warcraft2/Diablo1 Ära)? Die hatten tatsächlich 650 MB Executables auf den CDs in denen dann alles gepackt war.

    nur die installer, das ist aber fast normal.

    die spiele selbst benutzen ein von Bliz entwickeltes format names MoPaQ.
    eigenldich ein ganz nettes zeug.



  • pumuckl schrieb:

    Der Compiler übersetzt immer eine Übersetzungseinheit (eine cpp-Datei mit den eingebundenen headern usw.) in Objektcode, d.h in eine obj-Datei. Der Linker packt widerum alles zusammen in eine .exe Datei.

    Ja das meinte ich auch, hatte mich nur etwas unglücklich ausgedrückt.



  • SeppJ schrieb:

    Die hatten tatsächlich 650 MB Executables auf den CDs in denen dann alles gepackt war.

    Dann hätten aber die alten PC-Systeme doch ihre Schwierigkeiten damit gehabt (wer hatte vor 10 Jahren schon mehr als 512 MB? -)

    Erinnert mich aber an den tollen Spruch (angeblich von Bill Gates, 1981):

    640K ought to be enough for anybody.


Anmelden zum Antworten