/CLRIMAGETYPE (CLR イメージのタイプの指定)
/CLRIMAGETYPE:{IJW|PURE|SAFE|SAFE32BITPREFERRED}
解説
リンカーは、ネイティブ オブジェクトだけでなく、/clr、/clr:pure、または /clr:safe を使用してコンパイルされた MSIL オブジェクトも受け入れます。 同じビルドに混在するオブジェクトを渡すと、生成される出力ファイルの検証可能性は、既定で入力モジュールの最低レベルの検証可能性と等しくなります。 たとえば、安全で純粋なモジュールをリンカーに渡した場合は、出力ファイルは純粋になります。 ネイティブ イメージ、および /clr を使用してコンパイルされた混合モード イメージを渡す場合、結果のイメージは混合モード イメージになります。
/CLRIMAGETYPE を使用すると、必要に応じてより低い検証可能性を指定できます。
.NET 4.5 では、/CLRIMAGETYPE は SAFE32BITPREFERRED オプションをサポートします。 これにより、(イメージの PE ヘッダーに) MSIL オブジェクトは安全ですべてのプラットフォームで実行可能であるが、32 ビットの実行環境が推奨されることを示すフラグが設定されます。 このオプションにより、アプリを ARM プラットフォームで実行することが可能になるほか、64 ビットの実行環境を使用する代わりに、64 ビット オペレーティング システムの WOW64 で実行するように指定することができます。
64 ビット オペレーティング システムの /clr または /clr:pure を使用してコンパイルされた .exe を実行すると、アプリケーションは WOW64 で実行されるため、32 ビット アプリケーションを 64 ビット オペレーティング システム上で実行できます。 既定では、/clr:safe を使用してコンパイルされた .exe は、オペレーティング システムの 64 ビット サポートを使用して実行されます。 ただし、お使いの安全なアプリケーションで 32 ビット コンポーネントを読み込むことができます。 この場合、オペレーティング システムの 64 ビット サポートで実行している安全なイメージで 32 ビット アプリケーションを読み込もうとすると失敗します。 安全なイメージが 64 ビット オペレーティング システムで 32 ビット コンポーネントを読み込むときに、そのイメージを引き続き安全に実行するためには、/CLRIMAGETYPE:SAFE32BITPREFERRED オプションを使用します。 コードを ARM プラットフォームで実行する必要がない場合は、/CLRIMAGETYPE:PURE オプションを指定して、WOW64 で実行されるように (および独自のエントリ シンボルに置き換えるように) メタデータ (.corflags) を変更できます。
cl /clr:safe t.cpp /link /clrimagetype:pure /entry:?main@@$$HYMHXZ /subsystem:console
ファイルの CLR イメージのタイプを判断する方法については、「/CLRHEADER」を参照してください。
Visual Studio 開発環境でこのリンカー オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[構成プロパティ] ノードを展開します。
[リンカー] ノードを展開します。
[詳細] プロパティ ページをクリックします。
[CLR イメージ タイプ] プロパティを変更します。
このリンカーをコードから設定するには
- 「CLRImageType」を参照してください。