Teilen über


Auswählen des Formats von NETMODULE-Eingabedateien

Sie können eine MSIL-Datei .obj (kompiliert mit /clr) als .netmodule Datei verwenden. .obj Dateien enthalten Metadaten und systemeigene Symbole. .netmodules nur Metadaten enthalten.

Übergeben Sie eine MSIL-Datei .obj an einen anderen Visual Studio-Compiler mit der /addmodule Compileroption. Die .obj Datei wird Teil der resultierenden Assembly und muss mit der Assembly ausgeliefert werden. Beispielsweise verfügen Visual C# und Visual Basic über die /addmodule Compileroption.

Note

In den meisten Fällen müssen Sie die Datei von der .obj Kompilierung, die das .net-Modul erstellt hat, an den Linker übergeben. Das Übergeben einer Moduldatei oder .netmodule eines .dll MSIL-Moduls an den Linker kann zu LNK1107 führen.

.obj Dateien zusammen mit den zugehörigen .h Dateien, auf die Sie über #include in der Quelle verweisen, ermöglichen C++-Anwendungen die Nutzung der systemeigenen Typen im Modul. In einer .netmodule Datei können nur die verwalteten Typen von einer C++-Anwendung genutzt werden. Wenn Sie versuchen, eine .obj Datei an #using zu übergeben, sind keine Informationen zu systemeigenen Typen verfügbar. #include sie stattdessen die .obj Datei aus .h .

Andere Visual Studio-Compiler können nur verwaltete Typen aus einem Modul nutzen.

Verwenden Sie die folgenden Anleitungen, um zu bestimmen, ob Sie eine .netmodule oder eine .obj Datei als Moduleingabe für den MSVC-Linker verwenden müssen:

  • Wenn Sie mit einem anderen Visual Studio-Compiler als Visual C++ erstellen, erstellen Sie eine .netmodule und verwenden sie .netmodule als Eingabe für den Linker.

  • Wenn Sie den MSVC-Compiler zum Erstellen von Modulen verwenden und wenn die Module verwendet werden, um etwas anderes als eine Bibliothek zu erstellen, verwenden Sie die .obj vom Compiler erzeugten Dateien als Moduleingabe für den Linker. Verwenden Sie die .netmodule Datei nicht als Eingabe.

  • Wenn Ihre Module verwendet werden, um eine systemeigene (keine verwaltete) Bibliothek zu erstellen, verwenden Sie .obj Dateien als Moduleingabe für den Linker, und generieren Sie eine .lib Bibliotheksdatei.

  • Wenn Ihre Module zum Erstellen einer verwalteten Bibliothek verwendet werden und alle Moduleingaben für den Linker überprüft werden können (erstellt mit /clr:safe), verwenden Sie .obj Dateien als Moduleingabe für den Linker, und generieren Sie eine .dll (Assembly) oder .netmodule (Modul)-Bibliotheksdatei.

  • Wenn Ihre Module zum Erstellen einer verwalteten Bibliothek verwendet werden und ein oder mehrere Moduleingaben für den Linker nur /clrerstellt werden, verwenden Sie .obj Dateien als Moduleingabe für den Linker, und generieren Sie eine .dll (Assembly). Wenn Sie verwaltete Typen aus der Bibliothek verfügbar machen möchten und auch C++-Anwendungen die systemeigenen Typen in der Bibliothek nutzen sollen, besteht Ihre Bibliothek aus den .obj Dateien für die Bibliothekenkomponentenmodule. Sie möchten auch die .h Dateien für jedes Modul versenden, damit sie mit #include aus dem Quellcode referenziert werden können.

See also

.NETMODULE-Dateien als Eingabe für den Linker