Daily Archives: 5.3.2008

Wie man statisch gegen die C-Runtime (CRT) linkt

In Foren ist einer der häufigsten Fragen:

“Ich kopiere meine (simple) C++ Anwendung auf einen anderen Rechner, aber dort geht diese nicht! Es kommt immer ein Fehler wie ‘Anwendungskonfiguration falsch’ oder ‘SxS Error’. Wie kann ich meine Anwendung dort laufen lassen?”

Das Problem liegt daran, dass per Default gegen die DLL-Version der CRT (C-Runtime) gelinkt wird. Für diie Lösung gibt es nun zwei Antworten:

1. Du musst das passende vcredist_x86.exe auf dem Zielrechner installieren oder mit Deinem Installer die Merge-Modules installieren

Diese Option ist aber meistens zu aufwendig für eine einfache Anwendung. Deshalb rate ich immer zu der zweiten (und aus meiner Sicht besten Lösung):

2. Du musst Deine Anwendung statisch gegen die CRT linken, dann werden die CRT-DLLs nicht benötig und somit gibt es auch nicht den obigen Fehler.

Und bis man das nun wieder jedem erklärt hat, wie man das umstellt habe ich jetzt einen kleinen Screen-Cast (2:12 min) gemacht, der dies schön zeigt:

http://www.kalmbach-software.de/screencasts/VC2008EE-StaticLinkCRT/

PS: Dies geht nicht wenn die EXE/DLL .NET verwendet…