web-dev-qa-db-ja.com

xxxxxx.exeは有効なWin32アプリケーションではありません

Visual Studio 2012 RCに小さなC/C++プロジェクトがあります

このアプリケーションはargvを解析し、ShellExecuteで別の.exeファイルを呼び出します

私のアプリケーションはWindows7では完璧に動作しますが、WindowsではXP x86 trhowsは有効なWin32アプリケーションエラーではありません。

Mutli-thread(/ MT)とWin32プラットフォームでコンパイルしました

これは私の#includesです

#include <string>
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <cstdio>
#include <vector>
#include <windowsx.h>
#include <shlobj.h>
#include <stdio.h>
#include <tchar.h>
#include <direct.h>

ありがとう

38
user525717

VS 2012アプリケーションはWindows XPで実行できません。

なぜ、どのように機能させるかについては、この VC++ブログ を参照してください。

2013年2月からサポート/可能になるようです。方法については、以下の noelicusの回答を参照してください

44
RedX

2013年2月です。VS2012でXPをターゲットに設定できるようになりました。

プロジェクトのプロパティ->一般->プラットフォームツールセット

Visual Studio 2012-Windows XP(v110_xp)

アプリケーションでmsvcp110.dllライブラリなどを再配布する必要があります。これは次の場所にあります:"<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


Visual Studio 2015で2015年8月に更新

現在、かなりの選択があるようです。 Visual Studio 2015-Windows XP(v140_xp)設定を使用して、VS2015でアプリケーションをコンパイルできました。 Winで実際に実行するには、XPを展開する必要がありました(アプリケーションと一緒にコピー)msvcr100.dllリリースビルドおよびmsvcr110.dllおよび- msvcr100d.dllデバッグビルド(番号100と110に違いがあることに注意してください。debuglib msvcr100d.dllは再配布できない場合があります) Targeting Windows XP with Visual Studio 2015

50
noelicus

選択された答えはちょうど前のことであり、その後noelicusはv110_xpプラットフォームツールセットに関する正しい更新を提供しましたが、この動作を引き起こす可能性のある問題がまだ1つあります。

問題についてのメモは既にmaheshのコメントに投稿されています。これを強調するのは、苦労して数日を過ごした後、自分で見つけたからです。

そのため、「構成プロパティ->リンカー->システム->サブシステム」に空白がある場合、XPおよびWin2003でWin2003で「無効なWin32アプリ」エラーが表示されます。この迷惑なエラーなしで動作します。

6
Andrey Sorich

少なくとも2つの解決策があります。

  1. Visual Studio 2010がインストールされている必要があります。次に、Visual Studio 2010から、[表示]-> [ソリューションエクスプローラー]->プロジェクトを右クリック->コンテキストメニューから[プロパティを選択]を選択します。 [プロパティ]-> [全般]-> [プラットフォームツールセット]で、[Visual Studio 2010(v100)]を選択します。
  2. 必要なのは Visual Studio 2012 Update 1Windows XP Visual Studio 2012でのC++によるターゲット設定
5

私にとって、これは助けになりました。1.構成プロパティ/全般/プラットフォームツールセット= Windows XP(V110_xp)2. C/C++プリプロセッサ定義、「WIN32」を追加します

1
Matsk

Windows XPQt 5.7.(MSVC 2013)の静的バージョンでビルドされたアプリケーションを実行すると、同じ問題が発生しました。

プロジェクトの。proファイルに次の行を追加すると解決しました。

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
1
karlphillip