Was ist das Besondere an den mit Visual Studio 11 kompilierten ausführbaren Dateien, was dazu führt, dass die ausführbaren Dateien unter Windows XP nicht ausgeführt werden können?

Lesezeit: 3 Minuten

Was ist das Besondere an den mit Visual Studio 11
Norbert Wilhelm

Ich kompiliere meinen C++-Quellcode mit Visual Studio 11 Developer Preview. Ich verlinke statisch auf die Laufzeitbibliothek.

Die resultierende ausführbare Datei kann unter Windows XP nicht ausgeführt werden. Wenn ich versuche, es unter Windows XP auszuführen, erhalte ich die Fehlermeldung “[Executable Path] ist keine gültige Win32-Anwendung.”.

Laut Microsoft Visual Studio 11 unterstützt Windows XP nicht.

Wie funktioniert es, dass die resultierende ausführbare Datei unter Windows XP nicht ausgeführt werden kann? Gibt es etwas Besonderes in der ausführbaren Datei?

  • Welchen Projekttyp verwenden Sie in VS2011 für Ihre Anwendung?

    – masud

    9. Oktober 11 um 9:30

  • Ich verwende ein Win32-Projekt und erstelle eine Win32-Anwendung.

    – Norbert Wilhelm

    9. Oktober ’11 um 9:31

  • Es ist eine 32-Bit-App. Das Ergebnis von Dumpbin ist: Dump of file [Path] Dateityp: EXECUTABLE IMAGE Zusammenfassung 3000 .data 3000 .rdata 2000 .reloc 1000 .rsrc 6000 .text

    – Norbert Wilhelm

    9. Oktober ’11 um 10:22


  • Soll ich andere Befehlszeilenoptionen für Dumpbin verwenden?

    – Norbert Wilhelm

    9. Oktober ’11 um 10:24

  • @NorbertWillhelm: Die Seite, auf die ich verlinkt habe, ersetzt einige Funktionen …

    – Anders

    9. Okt ’11 um 12:08

1641736431 633 Was ist das Besondere an den mit Visual Studio 11
Anders

Sie scheinen die Unterstützung für ältere Systeme in jeder neuen Version von VS (NT4,2000,XP) Auch wenn Sie die CRT überhaupt nicht verwenden, zwingen sie immer noch die PE-Subsystemversion zu hohen Zahlen. Sie können das umgehen, indem Sie ändere die Zahlen zurück auf 5.0 in einem Postbuild-Schritt. Das Ändern dieser Nummern sollte es der exe ermöglichen, unter XP zu starten, es sei denn, die neue CRT verwendet WinAPI-Funktionen, die unter XP nicht vorhanden sind.

Die andere Alternative, wenn Sie VS11 weiterhin verwenden möchten, besteht darin, Multi-Targeting und ältere Compiler zu verwenden …

  • Welche Funktionen fehlen (sowohl für CRT als auch für MFC) und wie Sie das Fehlen dieser Funktionen unter XP umgehen, zeige ich Ihnen in diesem Blogbeitrag: tedwvc.wordpress.com/2012/03/11/…

    – Ted.

    13. März ’12 um 14:52

Was ist das Besondere an den mit Visual Studio 11
RichieHindle

Visual Studio 2012 kann später im Jahr 2012 auf Windows XP abzielen:

Ausrichtung auf Windows XP mit C++ in Visual Studio 2012

„Später in diesem Herbst wird Microsoft ein Update für Visual Studio 2012 bereitstellen, das es C++-Anwendungen ermöglicht, auf Windows XP abzuzielen. Dieses Update wird die erforderlichen Änderungen an dem Visual C++ 2012-Compiler, der Laufzeit und den Bibliotheken vornehmen, damit Entwickler Anwendungen und DLLs erstellen können.“ die auf Windows XP und höheren Versionen sowie Windows Server 2003 und höher laufen.”

Bearbeiten: Das ist jetzt passiert (puh!)

Die Problemumgehung besteht darin, ein anderes zu verwenden Platform Toolset, das eine andere CRT-Version verknüpft und Binärdateien erzeugt, die mit älteren Betriebssystemen kompatibel sind.

Sehen Sie hier mehr: Zielen Sie Windows XP in Visual Studio 11 Beta mit dem Visual Studio 2010-Compiler und den Bibliotheken.

Mit v90 Toolset Ihre Binärdatei auch in älteren Systemen wie Windows 2000 ausgeführt werden kann.

http://blogs.msdn.com/resized-image.ashx/__size/550×0/__key/communityserver-blogs-components-welogfiles/00-00-00-65-69/7444.BlogPic.png

Die mit VS 2010 und höher gebündelten Laufzeitbibliotheken erzwingen, dass Ihre ausführbare Datei zwei neue Funktionen aus der kernel32.dll importiert, die unter Windows XP fehlen: EncodePointer und DecodePointer. Die werden für noch mehr benötigt idiotisch naiver Versuch, die “Sicherheit” der Software zu erhöhen.

In VS 2010 gibt es eine Option, die Laufzeitbibliotheken von Visual Studio 2008 zu verwenden, was dieses Problem behebt. Ich weiß nicht, ob es eine solche Option in späteren Versionen von VS gibt.

.

215320cookie-checkWas ist das Besondere an den mit Visual Studio 11 kompilierten ausführbaren Dateien, was dazu führt, dass die ausführbaren Dateien unter Windows XP nicht ausgeführt werden können?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy