Meine aktuelle bevorzugte C++ - Umgebung ist die kostenlose und weitgehend ausgezeichnete Microsoft Visual Studio 2005 Express Edition. Von Zeit zu Zeit habe ich freigegebene EXE-Dateien mit erfreulichen Ergebnissen an andere Personen gesendet. In letzter Zeit machte ich jedoch die beunruhigende Entdeckung, dass die erfreulichen Ergebnisse auf mehr Glück beruhten, das mir gefallen würde. Der Versuch, eines dieser Programme auf einer alten XP-Box zu starten, gab mir nichts als eine böse "System kann nicht x.exe laufen" (oder eine ähnliche) Nachricht.Wie mache ich eine vollständig statisch verknüpfte .exe mit Visual Studio Express 2005?
Einige googeln ergab, dass mit diesem Toolset, selbst Angabe der statischen Verknüpfung in einer einfachen hallo-world.exe tatsächlich zusätzliche DLL-Dateien (msvcm80.dll usw.). Ein unglaublich ausgeklügeltes Versions-Schemasystem (manifest files anyone?) Lässt dann die .exe-Datei nicht ohne die richtigen .dll-Versionen laufen. Ich will oder brauche dieses Zeug nicht, ich will nur ein altmodisches, selbständiges .exe, das nichts als den kleinsten gemeinsamen Nenner von Win32-Operationen macht und auf jedem alten win32-Betriebssystem läuft.
Weiß jemand, ob es möglich ist, zu tun, was ich mit meinem vorhandenen Toolset machen möchte?
Vielen Dank.
"Wenn Sie andere Bibliotheken verwenden, müssen Sie dem Linker möglicherweise mitteilen, dass er die dynamisch verknüpfte CRT explizit ignoriert." Kürzlich bin ich auf dieses Problem gestoßen. Ich baute eine wxWidgets-App, ich fand, dass ich die wxWidgets-Bibliotheken mit der gleichen Codegenerierungsänderung neu erstellen musste –
Mann 300 Zeichen ist nicht viele. Wenn der obige Kommentar unklar ist, besteht das Problem darin, dass sowohl Ihre .cpp-Dateien als auch alle .cpp-Bibliotheksdateien "Multithread" anstelle von "Multithread-DLL" haben müssen, da sonst Linkfehler auftreten können. –
Dies führt zu zahlreichen Problemen bei der Heap-Verwaltung, mit denen Sie wahrscheinlich nichts zu tun haben wollen. –