c++ - 回避 - プラットフォームツールセット v140_xp




Visual Studio 11でコンパイルされた実行ファイルがWindows XP上で実行できないという特別な点は何ですか? (3)

VS 2010以上にバンドルされているランタイムライブラリは、Windows XPにはないkernel32.dllの2つの新しい関数EncodePointerDecodePointerをインポートするように実行可能ファイルを強制します。 これらは、ソフトウェアのセキュリティを強化するためのさらに別の愚かな単純な試みに必要です。

VS 2010には、この問題を解決するVisual Studio 2008のランタイムライブラリを使用するオプションがあります。 VSのそれ以降のバージョンにこのようなオプションがあるかどうかはわかりません。

Visual Studio 11 Developer PreviewでC ++ソースコードをコンパイルします。 私は静的にランタイムライブラリにリンクしています。

生成された実行ファイルは、Windows XPでは実行できません。 Windows XPで実行しようとすると、エラーメッセージ "[実行可能ファイルパス]が有効なWin32アプリケーションではありません。"が表示されます。

Microsoft Visual Studio 11によると、 Windows XPはサポートされません。

どのように結果の実行可能ファイルがWindows XP上で実行できないことは機能しますか? 実行可能ファイル内に特別なものはありますか?


Visual Studio 2012は2012年後半にWindows XPをターゲットにすることができます。

Visual Studio 2012でC ++を使用してWindows XPをターゲット設定する

この秋、MicrosoftはVisual Studio 2012のアップデートを提供し、C ++アプリケーションがWindows XPをターゲットとすることを可能にします。このアップデートにより、開発者がアプリケーションとDLLを作成できるようにVisual C ++ 2012コンパイラ、 Windows XP以降のバージョン、Windows Server 2003以上で稼働しています。

編集 :これは今起こった(phew!)


この問題を回避するには、異なるバージョンのCRTをリンクし、古いオペレーティングシステムと互換性のあるバイナリを生成する、異なるPlatform Toolsetを使用することです。

詳細はこちら: Visual Studio 2010コンパイラとライブラリを使用して、Visual Studio 11 BetaのWindows XPを対象にしてください。

v90ツールセットを使用すると、Windows 2000などの古いシステムでもバイナリを実行できます。

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







visual-studio-2012