/CLRTHREADATTRIBUTE (CLR スレッド属性の設定)

CLR プログラムのエントリ ポイントにスレッド属性を明示的に指定します。

構文

/CLRTHREADATTRIBUTE:{STA|MTA|NONE}

パラメーター

MTA
MTAThreadAttribute 属性をプログラムのエントリ ポイントに適用します。

NONE
/CLRTHREADATTRIBUTE を指定しない場合と同じです。 共通言語ランタイム (CLR) で既定のスレッド属性を設定できるようにします。

STA
STAThreadAttribute 属性をプログラムのエントリ ポイントに適用します。

解説

スレッド属性の設定は、.exe をビルドする場合にのみ有効です。これは、メイン スレッドのエントリ ポイントに影響するためです。

既定のエントリ ポイント (たとえば main や wmain など) を使う場合は、/CLRTHREADATTRIBUTE を使うか、既定のエントリ関数にスレッド属性 (STAThreadAttribute または MTAThreadAttribute) を配置することによって、スレッド モデルを指定します。

既定以外のエントリ ポイントを使う場合は、/CLRTHREADATTRIBUTE を使うか、既定以外のエントリ関数にスレッド属性を配置した後、/ENTRY を使って既定以外のエントリ ポイントを指定することによって、スレッド モデルを指定します。

ソース コードで指定されているスレッド モデルが /CLRTHREADATTRIBUTE で指定されているスレッド モデルに一致しない場合、リンカーは /CLRTHREADATTRIBUTE を無視し、ソース コードで指定されているスレッド モデルを適用します。

たとえば、単一スレッドを使う COM オブジェクトを CLR プログラムでホストしている場合などは、単一スレッドを使う必要があります。 CLR プログラムでマルチスレッドを使う場合は、単一スレッドを使う COM オブジェクトをホストすることはできません。

Visual Studio 開発環境でこのリンカー オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[リンカー]>[詳細] プロパティ ページを選択します。

  3. [CLR スレッド属性] プロパティを変更します。

このリンカーをコードから設定するには

  1. 以下を参照してください。CLRThreadAttribute

関連項目

MSVC リンカーのリファレンス
MSVC リンカー オプション