.netmodule 入力ファイルの形式の選択

MSIL .obj ファイル (/clrでコンパイルされた) または .netmodule ファイルとして使用できます。.obj ファイルにはメタデータおよびネイティブ シンボルが含まれます。.netmodules にはメタデータだけが含まれます。

/addmodule コンパイラ オプションを使用して、MSIL .obj ファイルを他の Visual Studio コンパイラに渡すことができます。ただし、.obj ファイルは生成されるアセンブリの一部になるため、アセンブリに含めて出荷する必要があります。たとえば、Visual C# と Visual Basic には /addmodule コンパイラ オプションがあります。

注意

ほとんどの場合、リンカーに .net を指定してモジュールを作成したコンパイラから .obj ファイルを渡す必要があります。これには、1 種類の例外は、"が /clr: 純粋で作成された場合。リンカーに .dll または .netmodule MSIL モジュール ファイルを渡すと、LNK1107 が発生する場合があります。

マネージ型だけが C++. C++ アプリケーションで使用できますが、.obj ファイル、ソースで #include で参照する関連付けられた .h ファイルとともに、モジュールのネイティブ型を一方、.netmodule ファイルで使用される、C++ アプリケーション。.obj ファイルを #using に渡そうとすると、ネイティブ型に関する情報が使用できなくなります。代わりに .obj ファイルの .h ファイルを #include に渡してください。

Visual C++ 以外の Visual Studio コンパイラで使用できるのは、モジュールのマネージ型だけです。

Visual C++ リンカーへのモジュール入力として"または .obj ファイルを使用する必要があるかどうかを判断するには、次の使用:

  • Visual C++ 以外の Visual Studio コンパイラでビルドする場合は、"を生成し、入力としてリンカーに"を使用します。

  • モジュールを生成し、の Visual C++ コンパイラを使用して、ライブラリ以外をビルドするために使用するモジュールをリンカーへのモジュール入力として生成された .obj ファイル;を使用します。.netmodule ファイルを入力として使用しないでください。

  • モジュールを使用してネイティブ ライブラリ (マネージ ライブラリではない) をビルドする場合は、.obj ファイルをリンカーへのモジュール入力として使用して、.lib ライブラリ ファイルを生成します。

  • マネージ ライブラリを構築するためにモジュールが使用される場合、リンカーへのすべてのモジュール入力が検証できる (/clr:safeと生成)、.obj ファイルをリンカーへのモジュール入力として使用して、.dll (アセンブリ) または .netmodule (モジュール) のライブラリ ファイルを生成します。

  • マネージ ライブラリを構築するためにモジュールが使用される場合、リンカーへのすべてのモジュール入力が /clr:pure または /clr:safeと生成された場合にのみ、ライブラリのマネージ型を公開する場合は、.obj ファイルをリンカーへのモジュール入力として使用して、.dll (アセンブリ) または .netmodule (モジュール) を生成します。ライブラリのマネージ型を公開し、C++ アプリケーションがライブラリのネイティブ型を使用できるようにする場合は、ライブラリはライブラリ コンポーネント モジュールの .obj ファイルから構成されます。#include を使用して各モジュールの .h ファイルをソース コードから参照できるように、これらのファイルも共に出荷します。

  • モジュールを使用してマネージ ライブラリをビルドし、リンカーへのモジュール入力の 1 つ以上が /clr だけを指定して生成される場合は、.obj ファイルをリンカーへのモジュール入力として使用して、.dll (アセンブリ) を生成します。ライブラリのマネージ型を公開し、C++ アプリケーションがライブラリのネイティブ型を使用できるようにする場合は、ライブラリはライブラリ コンポーネント モジュールの .obj ファイルから構成されます。#include を使用して各モジュールの .h ファイルをソース コードから参照できるように、これらのファイルも共に出荷します。

参照

関連項目

リンカー入力としての .netmodule ファイル