C++ Programm an Freunde verschicken ohne DLL's beizufügen



  • Hey Leute,

    ich verschicke immer gerne meine C++ Programme an Freunde, dabei ist mir aufgefallen, dass der Standard-Compiler von Microsoft Visual C++ 2010 Express zwar den Quellcode zu einer .exe compiliert, aber diese .exe:
    1. Eine kleinen Speicherverbrauch hat
    2. Meine Freunde diese ohne die benötigten .dll's nicht öffnen können (error)
    Und da ist auch das Problem.
    Es ist sehr nervig immer die benötigten dll's per herauszufinden und beizufügen,
    denn der Standard-Compiler von Dev-C++ compiliert den Quellcode zu einer .exe die:
    1. Einen etwas größeren Speicherverbrauch hat
    2. Dafür aber ohne .dll's bei Freunden gestartet werden kann
    Also würde ich schlicht und einfach sagen:
    Der Compiler von Dev-C++ ist besser als der von Microsoft Visual C++ 2010 Express.
    Dennoch mag ich das Design von Microsoft Visual C++ viel mehr als das von Dev-C++ und würde das Programm bevorzugen.
    Nun zur Frage:
    Gibt es eine Möglichkeit den Compiler bei Microsoft Visual C++ 2010 Express so einzustellen, dass der Quellcode zu compiliert wird, das meine Freunde die .exe auch ohne dll's starten können?

    MfG, Marvin.



  • Rechtsklick auf dein Projekt im Solution Explorer -> Properties -> C/C++ -> Code Generation -> Runtime Library ändern auf "Multi-threaded (/MT)".
    Wenn du die deutsche Version von Visual Studio hast kriegst du es sicher irgendwie übersetzt.



  • Danke! 🙂



  • Moorky Dragonstrike schrieb:

    Es ist sehr nervig immer die benötigten dll's per herauszufinden und beizufügen,
    denn der Standard-Compiler von Dev-C++ compiliert den Quellcode zu einer .exe
    [...]
    Also würde ich schlicht und einfach sagen:
    Der Compiler von Dev-C++ ist besser als der von Microsoft Visual C++ 2010 Express.

    Interessante Schlussfolgerung 😃

    Die Idee von dynamischer Runtime (oder dynamischen Bibliotheken generell) ist, dass du sie einmal installierst und dann für mehrere Anwendungen benutzen kannst, statt sie jedes Mal zu duplizieren. Es ist auch möglich, diese unabhängig von der Anwendung zu aktualisieren, solange Binärkompatibilität erhalten bleibt.

    Laufzeitbibliotheken statisch zu linken mag bei einfachen Projekten zwar praktisch erscheinen, aber sobald du ein etwas komplexeres Projekt hast und auch externe Bibliotheken benutzt, wird dir das schnell zum Verhängnis. Oft bist du gezwungen, die Bibliotheken mit der selben Einstellung neu zu kompilieren und den Speicherplatz zu vervielfachen (nämlich pro Bibliothek), ausser du linkst wieder alles statisch (was teilweise wieder nicht geht, wegen LGPL o.Ä.). Und dann musst du wahnsinnig aufpassen, dass keine Ressourcen (Heap-Memory, File-Handles, Exceptions) zwischen Bibliotheken geteilt werden. In der Praxis bedeutet das, dass du die meisten APIs schlicht nicht benutzen kannst.

    Mehr Informationen dazu findest du auf MSDN.


Anmelden zum Antworten