PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum kompiliert Visual C++ so groß?


Gast
2010-07-31, 09:14:03
Hallo.

Bin gerade dabei etwas in Visual C++ 2010 rumzuspielen, bis mir aufgefallen ist, dass selbst für simpelste Dinge dieser Compiler bereits ein 6kb Programm kompiliert. Zum Beispiel:

int main()
{

return 0;
}

Ein Programm, das absolut nichts tut, ist bereits 6kb groß. Warum ist das so? Sehe ich mir einmal die .exe an, so haut Visual C++ gleich mal Imports wie "GetTickCount", "Sleep", "IsDebuggerPresent" und "GetSystemTimeAsFileTime" (http://www.forum-3dcenter.org/vbulletin/images/3dc/smilies/ugly/ugly.gif) rein, ohne dass ich sie vorher irgendwie gebraucht hätte.

Das Zweite was mich stört: Die Dependency auf MSVCR100.dll. Warum muss die unbedingt rein? Das stört mich absolut. Rechner die diese .dll nicht haben, können die Anwendung nicht starten! Und statisch reinlinken in die .exe bläht wieder alles auf.

Das Dritte: Warum speichert Visual C++ den Pfad zu meiner Projektdatei in die .exe ab? Sehe ich mir das Kompilat mal im Notepad an, sehe ich in der unteren Hälfte:

c:\users\administrator\documents\visual studio 2010\Projects\yo\Release\yo.pdb

Was soll das? Müssen End-user das wirklich wissen?

Kann ich das alles irgendwie beheben (Compilereinstellungen?), oder muss ich auf einen anderen C++-Compiler ausweichen?

Danke für eure Hilfe.

Neomi
2010-07-31, 13:05:58
Wenn du mit Debuginformationen kompilierst, dann sind nunmal Debuginformationen drin. ;)

Du kannst dir haufenweise Konfigurationen anlegen, zwischen denen du schnell umschalten kannst, automatisch eingerichtet sind meist Debug und Release. Und jede dieser Konfigurationen kannst du einstellen, wie du es brauchst. Wirf einfach mal einen Blick darein und wenn du bestimmte Einstellungen nicht verstehst, drück F1, die sind nämlich ordentlich dokumentiert.

Coda
2010-07-31, 13:44:22
Das Zweite was mich stört: Die Dependency auf MSVCR100.dll. Warum muss die unbedingt rein?
Muss sie nicht. Du kannst die Runtime auch statisch linken.

Gast
2010-08-01, 22:27:44
OK, hab alles erledigt bekommen, sogar die MSVCR100.dll rausbekommen und durch MSVCRT.dll ersetzt bekommen, die seit Windows 95 dabei ist. Da ihr mir auch keine große Hilfe wart, sag ich die Lösung jetzt auch nicht http://www.ugly-smilies.de/data/ulgy_druff.gif

Coda
2010-08-01, 22:29:52
Keine gute Idee, aber wenn es dir hilft.