C++ Wie kann man die kompilierte EXE auf andere PC Systeme zum laufen zu bringen?

konnichi

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
412
Hallo,

Wie kann ich meine kompilierte EXE Datei auf andere PCs ausführen? Das geht auf 50% der PCs leider nicht.

Ich programmiere in C++ und kompiliere mein Code mit MS Visual studio 2008 pro.
Was soll ich dabei in VS 2008 pro einstellen , damit meine EXE's überall laufen?

Vielen dank im Voraus. ;)
 
Project -> Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded oder Multi-threaded Debug, je nach dem...

Dann sollte dein Programm auf jedem PC laufen.

Gruß
BlackMark
 
Das Problem liegt daran, dass man Visual Studio so einstellen kann dass der gegen einer der msvcrt dlls linken soll (je nach Visual Studio Version unterschiedlich).

Das hat den Nachteil dass man diese DLL entweder mit der Anwendung mitliefern muss oder dass der Anwender ein sogenanntes Redistributable Paket installieren muss welches diese DLL's enthält.

Der Vorteil von diesem Konzept ist allerdings, dass die eigene ausführbare Datei dabei möglichst klein gehalten wird. Das ganze nennt sich auch dynamisches Linken.

Im Gegensatz dazu gibt es das statische Linken in der der komplette msvcrt Code in die eigene Anwendung übernommen wird, mit dem Nachteil dass die Anwendung selbst bei kleinsten Programmen ziemlich aufgebläht wird.

Welche Redistributabel Pakete gibt es:

Microsoft Visual C++ 2008 Redistributable Package (x86)
Microsoft Visual C++ 2008 Redistributable Package (x64)
Microsoft Visual C++ 2005 Redistributable Package (x86)
Microsoft Visual C++ 2005 Redistributable Package (x64)
 
Ein statisch gelinktes Programm hat meistens zwischen 100 - 200 KB.
Also als so aufgebläht würde ich das jetzt nicht bezeichnen, klar im vergleich zu dynamisch gelinkten Programmen ist es viel, aber allgemein gesehen ist eine akzeptable Größe.

Was ist wohl einfacher für den User, das Redistributable Package mit ca. 2 MB downzuloaden und zu installieren, oder statt einer 10 KB Datei eine 100 KB Datei zu haben und nichts mehr machen zu müssen?

Folglich würde ich aus Benutzerfreundlichkeit immer statisch linken, da das für die User ohne Redistributable Package keine zusätzlichen Schwierigkeiten bringt.

Gruß
BlackMark
 
Ein statisch gelinktes Programm hat meistens zwischen 100 - 200 KB
Das glaubst du nicht ernsthaft, oder?

Was ist wohl einfacher für den User, das Redistributable Package mit ca. 2 MB downzuloaden und zu installieren, oder statt einer 10 KB Datei eine 100 KB Datei zu haben und nichts mehr machen zu müssen?
Was passiert, wenn in einer Bibliothek Verbesserungen (oder Bugfixes) vorgenommen werden? Da muss der Benutzer dann alle (!!!) Programme die diese Bibliothek benutzen (und statisch gelinkt sind) neu installieren. Benutzerfreundlichkeit sieht anders aus...l
 
Das glaubst du nicht ernsthaft, oder?
Ein einfaches "Hello World" Programm, welches statisch gelinkt wurde hat bei mir 135 KB, also warum sollte ich das nicht glauben?

Sehr benutzerfreundlich, wenn das Programm erst läuft wenn das Redistributable Package installiert ist...

Gruß
BlackMark
 
Ein einfaches "Hello World" Programm, welches statisch gelinkt wurde hat bei mir 135 KB, also warum sollte ich das nicht glauben?
Naja, die meisten Programme sind aber leider keine einfachen "Hello World " Programme, sondern wesentlich komplexer. Und dann wirst du mit 200KB nicht mehr weit kommen.

Sehr benutzerfreundlich, wenn das Programm erst läuft wenn das Redistributable Package installiert ist...
Deswegen sollten die Redistributables auch bei deinem Programm mitgeliefert und dann ggf. automatisch installiert werden. Aber ich denke, dass das allemal benutzerfreundlicher ist, als wenn bei jedem Update der Bibliothek alle Programme neu installiert werden müssen.
 
Naja, die meisten Programme sind aber leider keine einfachen "Hello World " Programme, sondern wesentlich komplexer. Und dann wirst du mit 200KB nicht mehr weit kommen.
Solange man keine zusätzlichen Bibliotheken verwendet, wirst du auch bei komplexeren Programmen unter 200 KB bleiben.

Bei den Programmen die konnichi erstellt, bin ich mir aber zimlich sicher, dass statisch linken die intelligenteste Lösung ist.

Gruß
BlackMark
 
Zuletzt bearbeitet:
Hallo,
Das hier hat geholfen:
Project -> Properties -> C/C++ -> Code Generation -> Runtime Library: Multi-threaded Debug DLL.

Die EXE's sind in der Tat jetzt um paar KB's größer, aber die gehen jetzt auf andere Rechner.
Jetzt kann der Virencoden Mal richtig anfangen.
cout << endl;
cout << endl;
cout << endl;
...nur zum Spaß, hehe,.
THX Leute.
 
Zurück
Oben