2011-10-07 12 views
6

コンパイラをx86とx64両方の実行可能ファイル/ DLLをコンパイルするように設定することはできますか?つまり、両方のプラットフォームに適した1つのファイルです。x86とx64の両方のコンパイル

私はプラットフォームを別々に選ぶ方法しか知りませんが、私は両方を望みます。

それは可能ですか?

答えて

19

x86実行可能ファイルは、x64ホストで完全にサポートされています。例えば。 32ビットモードでコンパイルするEXEは、32ビットのの64ビットホストで問題なく実行されます。 64ビット実行可能ファイルが必要な理由がわからない場合は、おそらく実行しないので、32ビット実行ファイルだけで十分です。

しかし、DLLの場合は別の問題です。 DLLのアーキテクチャ(32ビットまたは64ビット)は、がDLLが使用される実行ファイルと一致する必要があります。例えば。 x64 Windows用のエクスプローラ拡張機能を作成している場合、explorer.exeは64ビットになるため、DLLも64ビットでなければなりません。それ以外の場合はロードできません。

Windows上で1つのDLLまたはEXEに2つの異なるアーキテクチャを組み合わせる方法はありません。したがって、32ビットと64ビットの両方のホストをサポートする必要がある場合は、2つのDLLが必要になります。

+0

32ビットと64ビットを1つの実行可能ファイルに結合するには、プラットフォームを検出して現在のプラットフォーム用の正しいEXEを抽出/実行する32ビットの自己抽出機能を使用できます。しかし、これは2つの実行可能ファイルよりも本当の利点はありません。 –

+6

@haimg:32ビットEXEは、WOW64コンポーネントがインストールされている場合にのみ64ビットWindowsシステムで実行できます。初期の64ビットWindows版では、WOW64は必須コンポーネントでしたが、Windows Server 2008 R2以降、WOW64はオプションであるため、インストールされている場合とインストールされていない場合があります。 –

+0

@ RemyLebeau-TeamB:有効なポイントです。しかし、WOW64をアンインストールした実際のプロダクションシステムを見たことがありますか?私は組み込みシステムの世界の外ではそれを想像することはできません... – haimg

関連する問題