.exe Datei viel (!) zu groß C++ 

Status
Für weitere Antworten geschlossen.

Yoda2003

Registered +
Registriert
Mai 2005
Beiträge
980
Hallo,

ich habe folgendes Problem.
Ich habe mit Visual Studio 2008 Professional ein sehr einfaches, simples Programm geschrieben. Es gibt einmal einen ganz kurzen Satz aus und speichert zwei Eingaben ein Variablen.

So, jetzt wollte ich das Programm auf einem anderen Rechner, wo VisualStudio nicht installiert ist, laufen lassen und ging natürlich nicht. So, ich bin folgender Anleitung gefolgt:
Created by Camtasia Studio 5

Damit lief es zwar auf dem anderen Rechner, aber das Programm ist ganze 500 kb (!!!) groß. Für eine Textausgabe und zwei -eingaben viel zu viel.

Jetzt die Frage, wie bekomme ich mit Visual Studio eine c++ datei so gelinkt, dass sie auf anderen Rechnern läuft aber längst nicht so groß ist?
(Jetzt bitte keine Tipps wie: Benutz Winrar oder so)

mfg
Yoda2003
 
Versuch doch einfach mal den Quellcode in Dev-C++ zu kopieren und zu Linken. Dann sollte es eigt funktionieren
 
Also, ich möchte schon gern bei Visual Studio bleiben.
@DOcean: ja, ichabe die Debug genommen, da das die einzige .exe Datei war, die ich in meinem Projekt Ordner finden kann. Wie komm ch an die Release Version?

Achja, dass mit dem RunTime insallieren möchte ich ungern machen, da nicht jeder, der meine Anwendung bekommt, sie erst umständlich instlliern soll.

mfg
Yoda2003
 
Tut mir leid hab ich keinen Plan von...

Bin kein Visual Studio Nutzer...(guck mal unter den Eigenschaften, oder guck dir nochmal den Screencast an)

Google liefert aber ein paar Treffer....
 
Oben in der Tool-Leiste im VisualStudio neben einem Grünen Pfeil steht Debug. Da kannst du in der Liste Release auswählen und dann das Projekt neu erstellen. Die Exe findest du normalerweise dann im Arbeitsverzeichnis/Release.
 
Hi,

supi :)
Vielen Dank...Mit dem Release hat es jetzt geklappt.
Die Datei ist auch nur noch 107 kb groß.
Aber das ist doch immer noch recht groß für ein paar Codezeilen, oder?

mfg
Yoda2003
 
Poste mal bitte deinen code, ich schau mal wie groß der bei mir wird und ob ich dir noch tips zum optimieren geben kann
 
Code:
#include
#include
#include

using namespace std;

int main()
{
string name, key;
cout  cout  cin >> name;
cout  cin >> key;

if(key != "l33thaxX0r")
{
cout  }
else
{
cout  }

getch();

}

Sollte ein kleines CrackMe für mich selbst werden.
Ich weiß, ich speichere den Wert des Strings name umsonst, da ich ihn net brauch, hab ich aber so beabsichtigt, damit man bei der Lösung dieses CrackMes nicht sofort siehst, dass es nur auf den "key" ankommt.

mfg
Yoda2003
 
Code:
cout  cout  cin >> name;
cout  cin >> key;

das endl am Ende sorge dafür das die Ausgabe auf jeden Fall gemacht wird (Leeren des Buffer) und macht auch ein '\n'.

Du solltest entweder C++ Fkt. verwenden oder C FKt., cin und getch zu mischen kann nette Effekte geben (verwenden zB unterschiedliche Buffer)

dann kann nämlich conio.h raus....
 
DOceans Tipp würd ich auf jeden Fall beherzigen ;) Dürfte allerdings nicht viel an der Größe der exe ändern. Vielleicht 1 oder 2 kb... wenn überhaupt :)

An sonsten habe ich mal versucht bei den linkeroptionen noch was zu finden womit man das Programm noch mehr optimieren könnte, konnte da allerdings nicht wirklich mehr rausholen. Das Programm mit den statisch dazu gelinkten Bibliotheken ist um Faktor 10 mal größer als wenn man nicht statisch linkt. Das sieht bei so einem kleinen Programm viel aus, müsste aber bei nem größeren Programm weniger auffallen.

Interessant wär auf jeden fall mal zu testen wie groß die exe Dateien werden wenn sie mit gcc o.a. kompiliert werden.
 
also bei mir unter Linux (gcc mit normaleinstellungen ist das kompiliert 12K groß). Mit der -S Option (auf Size optimieren) ist es nochmal 2K kleiner.
Wie macht VS das eigentlich? geht es standardmäßig davon aus, dass auf dem Zielrechner das VC++-distributable package installiert ist oder linkt es die benötigten Libraries statisch?
 
hättest du alles gelesen... er will das statisch haben.... damit es auf jedem Rechner läuft...

Die Optionen wäre aber mal interessant.... -01 -02 -0s
 
Liegt doch daran, dass die ganzen Sachen eingebunden werden im #include, die sind auch gross. Und C-ähnliche Sprachen bilden halt grosse .exe, nicht zu vergleichen mit Sprachen wie zB PureBasic.
 
so, meld mich dann auch wieder zu wort xD
also mit devc++ ist die datei auch riesieg. Von der Größe her evtl. ein ganz kleines bisschen kleiner, nimmt sich aber so gut wie nichts.

Naja, im Notfall muss ich eben in Zukunft immer eine .dll datei mitgeben, dann muss ich es net statisch linken.

Btw. mit Packprogramen wie upx (gibt übrigens noch deutlich bessere^^) hab ich die dateigröße tatsächlich auf ein fünftel ca. gebracht, also ca. 100 kb.

Für mich hat sich also der Thread erledigt, danke für eure Hilfe :)
@mods: pls closen
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten