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.
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.