No Visual Studio Runtimes
Wer eine C++ Applikation in Windows schreibt wird früher oder später darauf angewiesen zu sein die Visual Studio Runtimes zu installieren.
Visual Studio linkt standardmäßig gegen eine ddl Version der C Runtimes. Das reduziert den Speicherplatz von Applikationen, da diese von vielen Programmen genutz werden kann, ohne Sie selbst mit zu bringen.
Die Dateien sind (z.B. bei VC14):
- concrt140.dll
- msvcp140.dll
- vccorlib140.dll
- vcruntime140.dll
Dabei sind wir auch schon bei dem Thema, warum ich nicht glücklich mit dieser Lösung bin:
- Die Runtimes sind abhängig von der VisualStudio Version, auch bringt jede Version oft noch andere abhängigkeiten mit sich.
- Man muss jedesmal sicherstellen dass die Runtimes installiert sind. Sonst funktioniert die Software nicht.
- Die Debug Versionen sind nicht als Installationspaket vorhanden. Wer, wie ich, des öfteren Remote Debuggen muss, muss die Debug Versionen jedesmal zu der Applikation dazu kopieren.
Es gibt zum Glück die Möglichkeit die Runtime static zu linken. Dadurch werden die Exen zwar etwas größer, aber das ist bei etwa 100kb leicht in kauf zu nehmen.
Um static zu linken geht man wie folgt vor:
- Rechtsklick auf das Projekt
- Settings
- Configuration Properties
- C/C++
- Code Generation
- Ändere Runtime Library zu Multi-threaded (/MT) oder bei der Debug Version Multi-threaded Debug (/MTd)
Visual Studio C++ set no runtime