/MD、/MT、/LD (ランタイム ライブラリの使用)

更新 : 2007 年 11 月

マルチスレッド モジュールが DLL であるかどうか、およびリテール バージョンとデバッグ バージョンのどちらのランタイム ライブラリを選択するかを指定します。

/MD[d]
/MT[d]
/LD[d]

解説

オプション

説明

/MD

アプリケーションで、マルチスレッド対応バージョンおよび DLL 対応バージョンのランタイム ライブラリが使用されます。_MT および _DLL を定義し、コンパイラにライブラリ名 MSVCRT.lib を .obj ファイルに挿入させます。

このため、このオプションを指定してコンパイルしたアプリケーションは、MSVCRT.lib と静的にリンクされます。このライブラリではコード レイヤを提供して、リンカが外部参照を解決できるようにします。ただし、実際のコードは MSVCR90.DLL, に入っています。したがって、MSVCRT.lib とリンクされるアプリケーションの実行時には、MSVCR80.DLL にアクセスできるようにしておく必要があります。

_STATIC_CPPLIB プリプロセッサ定義 (/D_STATIC_CPPLIB) と共に /MD を使用した場合、動的バージョン (msvcprt.lib) ではなく静的マルチスレッドの標準 C++ ライブラリ (libcpmt.lib) にリンクします。ただし、引き続き msvcrt.lib を通じてメイン CRT に動的にリンクします。

_STATIC_CPPLIB プリプロセッサ定義と /clr または /clr:pure コンパイラ オプションの組み合わせはサポートされていません。/clr オプションの制限の詳細については、「/clr の制約」を参照してください。

/MDd

_DEBUG_MT、および _DLL を定義します。アプリケーションで、マルチスレッド対応バージョンおよび DLL 対応バージョンのランタイム ライブラリが使用されます。また、コンパイラにライブラリ名 MSVCRTD.lib を .obj ファイルに挿入させます。

/MT

アプリケーションで、マルチスレッド対応のスタティック バージョンのランタイム ライブラリが使用されます。_MT を定義します。また、コンパイラにライブラリ名 LIBCMT.lib を .obj ファイルに挿入させるため、リンカは LIBCMT.lib を使って外部シンボルを解決します。

/MTd

_DEBUG および _MT を定義します。また、コンパイラにライブラリ名 LIBCMTD.lib を .obj ファイルに挿入させるため、リンカは LIBCMTD.lib ライブラリを使って外部シンボルを解決します。

/LD

DLL を作成します。

リンカに /DLL オプションを渡します。リンカは DllMain 関数の有無を確認します。DllMain 関数が記述されていないと、TRUE を返す DllMain 関数がリンク時に自動的に挿入されます。

DLL の起動コードをリンクします。

コマンド ラインでエクスポート (.exp) ファイルが指定されていない場合は、インポート ライブラリ (.lib) を生成します。このインポート ライブラリを DLL を呼び出すアプリケーションにリンクしてください。

/Fe (EXE ファイルの名前の指定) オプションで指定したファイル名を .exe ファイルではなく、DLL の名前として解釈します。既定のプログラム名は basename.exe ではなく、basename.dll になります。

/MD を明示的に指定している場合以外は、/MT が暗黙に指定されます。

/LDd

デバッグ DLL を作成します。_MT および _DEBUG を定義します。

C ランタイム ライブラリ、および /clr (共通言語ランタイムのコンパイル) を指定したコンパイルで使用されるライブラリの詳細については、「C ランタイム ライブラリ」を参照してください。

リンカの特定の呼び出しに渡されるすべてのモジュールは、同じランタイム ライブラリ コンパイラ オプション (/MD/MT/LD) を指定してコンパイルされている必要があります。

デバッグ バージョンのランタイム ライブラリの使い方の詳細については、「ランタイム ライブラリ リファレンス」を参照してください。

サポート技術情報の「HOWTO: Link with the Correct C Run-Time (CRT) Library (Q140584)」でも、適切な C ランタイム ライブラリの選択方法を説明しています。

DLL の詳細については、「DLL」を参照してください。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。

  2. [C/C++] フォルダをクリックします。

  3. [コード生成] プロパティ ページをクリックします。

  4. [ランタイム ライブラリ] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

参照

参照

コンパイラ オプション

コンパイラ オプションの設定