5

タイトルが示すように、64 ビット マシンで VS 2012 を使用して C# アプリをコンパイルしています。ビルド中のプログラムを 32 ビット マシンで実行したいと考えています。

現在、オンラインで見つけた唯一のヘルプは次のとおりでした: メニュー > ビルド > 構成 > アクティブ ソリューション プラットフォームのデフォルトは任意の CPU でした。

ビルドをチェックして、プラットフォームx86のデバッグ構成に新しいものを追加しようとしました

32 ビット マシンでアプリをコンパイルして実行すると、エラー A.exe は有効な Win32 アプリケーションではありません。

私の上記は、ここで行われたことと似ていました: Link to Stack Overflow Similar Question

更新 1: ターゲット OS は WinXP SP3 ですが、.NET 4.5 が搭載されているとは思えません。以前のバージョンのアプリを .NET 4.0 でコンパイルすると問題が解決し、問題が修正されるかどうかをテストします。問題は、表示されているエラー メッセージとは異なる場合があります。

4

5 に答える 5

6

プロジェクトをターゲットに設定するAnyCPUと、64 ビットのネイティブ コードをロードするライブラリを使用していなければ、32 ビット マシンで実行できるようになります。AnyCPU依存関係がある場合は、それらの依存関係の 32 ビット バージョンも使用する必要があります。また、適切な .NET Framework が 32 ビット マシンにインストールされていることを確認してください (新しいプロジェクトで VS 2012 を使用している場合は、既定で .NET 4.5)。

新しいプロジェクトの VS 2012 のデフォルトは AnyCPU で、Prefer 32 Bitオプションがチェックされていることに注意してください。これにより、64 ビット OS でも常に 32 ビット アプリケーションとして実行されます。


あなたの友人は XP sp3 を実行しているため、.NET 4.5 を使用できないことに注意してください。.NET 4.5 は、Windows XP ではサポートされていません。アプリケーションを .NET 4.0 をターゲットとするように変更する必要があります。これにより、XP マシンで動作するようになります (4.0 フレームワークがインストールされている場合)。

于 2013-01-31T19:10:18.383 に答える
3

そのエラーが Win32 エラーERROR_BAD_EXE_FORMATです。これはローダーによって生成され、32 ビット オペレーティング システムで 64 ビット プロセスを実行しようとしたときに発生します。このエラーを確認する方法は他にもありますが、これが .exe ファイルで発生する最も一般的な理由です。

32 ビット プロセスをコンパイルするには、プロジェクト構成で x86 をターゲットにする必要があります。もう 1 つの方法は、AnyCPU をターゲットにすることです。これにより、32 ビット OS で実行すると 32 ビット プロセスになり、64 ビット OS で実行すると 64 ビット プロセスになります。ビルドは x64 をターゲットにしているようです。

于 2013-01-31T19:10:07.680 に答える
1

プラットフォーム名 (「ビルド」ページのプロパティの上部に表示) は単なる名前です。構成エディターの「アクティブ ソリューション プラットフォーム」も同様です。これは少し混乱します。

「ターゲット プラットフォーム」設定が実際に「AnyCPU」または「x86」に設定されていることを確認する必要があります。

于 2013-01-31T19:30:37.300 に答える
1

私は同じ問題を抱えていました。私はそれに苦労しています。そして、私は解決策を見つけました。解決策は次のとおりです。

まず、プラットフォーム ターゲット " x86 " を選択します。その後、プロジェクトを「デバッグモード」ではなく「リリースモード」としてビルドします。最後に、任意のプラットフォーム (32 ビットまたは 64 ビット) で実行できます。

于 2013-03-07T07:50:40.643 に答える