Was ist das Besondere an den ausführbaren Dateien kompiliert mit Visual Studio 11, die Ergebnisse, dass die ausführbaren Dateien nicht ausgeführt werden kann auf Windows XP?
Ich kompilieren meine C++ - source-code mit Visual Studio 11 Developer Preview. Ich statisch verknüpft werden, um die Laufzeit-Bibliothek.
Die resultierende ausführbare Datei kann nicht ausgeführt werden Windows XP. Wenn ich versuche, führen Sie es auf Windows XP bekomme ich die Fehlermeldung "[Programmpfad] ist keine gültige Win32-Anwendung.".
Laut Microsoft Visual Studio 11 keine Unterstützung für Windows XP.
Wie funktioniert es, dass die resultierende ausführbare Datei kann nicht ausgeführt werden, auf Windows XP? Gibt es etwas besonderes in der ausführbaren Datei?
- Die Projekt-Typ, den Sie verwenden in VS2011 für Ihre Anwendung ?
- Ich benutze ein Win32-Projekt und erstellen Sie eine Win32-Anwendung.
- Es ist eine 32 bit App. Das Ergebnis von dumpbin ist: Dump-Datei [Pfad] Datei-Typ: AUSFÜHRBARES ABBILD Übersicht 3000 .Daten 3000 .rdata 2000 .reloc 1000 .rsrc 6000 .text
- Soll ich verschiedene Kommandozeilen-Optionen für dumpbin?
- Willhelm: die Sie wahrscheinlich nicht verwenden Fasern, welche, wenn Sie erstellen Sie Ihre eigene gefälschte version dieser Funktion?
- Wie funktioniert das erstellen einer fake-version dieser Funktion arbeiten?
- Die Seite, die ich verlinkt ersetzt einige Funktionen...
- stellt sich die Frage, für VS2013
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheinen Sie zu drop-Unterstützung für ältere Systeme, die in jeder neuen Version von VS (NT4,2000,XP), Auch wenn Sie nicht die CRT an alle, die Sie noch Kraft der PE-Teilsystem-version zu hohe zahlen. Sie können das umgehen, indem ändern Sie die zahlen zurück bis 5,0 in einer post-build-Schritt. Nur ändern sich diese zahlen ermöglichen sollte, die exe zum starten auf XP, es sei denn, die neuen CRT ist mit WinAPI-Funktionen, die nicht existieren, auf XP.
Die andere alternative, wenn Sie weiterhin verwenden möchten VS11 ist die Verwendung von multi-targeting und älteren Compilern...
Visual Studio 2012 wird in der Lage sein zu Ziel Windows XP später in 2012:
Für Windows XP mit C++ in Visual Studio 2012
"Später in diesem Herbst wird Microsoft ein update für Visual Studio 2012, das aktivieren der C++ - Anwendungen für Windows XP. Dieses update wird die notwendigen änderungen an der Visual C++ - 2012-compiler, runtime und Bibliotheken zu ermöglichen Entwicklern das erstellen von Anwendungen und DLLs, die unter Windows XP und höheren Versionen sowie Windows Server 2003 und höher."
Bearbeiten: Dies ist nun passiert (Puh!)
Die Problemumgehung ist die Verwendung einer anderen
Platform Toolset
, das wird link eine andere version der CRT-und produzieren Binärdateien kompatibel zu älteren Betriebssystemen.Sehen Sie mehr hier: Ziel-Windows-XP in Visual Studio 11 Beta mit Visual Studio 2010 compiler und den Bibliotheken.
Mit
v90
toolset Ihre binäre können ausgeführt werden, auch in älteren Systemen wie Windows 2000.http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/7444.BlogPic.png
Runtime-Bibliotheken gebündelt mit VS 2010 und höher Durchsetzung Ihrer ausführbaren Datei zu importieren, die zwei neuen Funktionen vom kernel32.dll fehlt unter Windows XP:
EncodePointer
undDecodePointer
. Benötigt werden für ein weiteresschwachsinnignaive Versuch zur Verbesserung der software - "security".In VS 2010 gibt es eine option, um die runtime-Bibliotheken von Visual Studio 2008, die dieses problem löst. Ich weiß nicht, ob es so eine option in späteren Versionen von VS.