Välja format för .netmodule-indatafiler

Du kan använda en MSIL-fil .obj (kompilerad med /clr) som en .netmodule fil. .obj filer innehåller metadata och inbyggda symboler. .netmodules innehåller endast metadata.

Skicka en MSIL-fil .obj till en annan Visual Studio-kompilator med kompilatoralternativet /addmodule . Filen .obj blir en del av den resulterande sammansättningen och måste levereras med sammansättningen. Visual C# och Visual Basic har till exempel kompilatoralternativet /addmodule .

Note

I de flesta fall måste du skicka filen från kompilatorn som skapade .net-modulen till länkaren .obj . Om du skickar en .dll ELLER .netmodule MSIL-modulfil till länkaren kan det leda till LNK1107.

.obj filer, tillsammans med deras associerade .h filer, som du refererar till via #include i källan, tillåter C++-program att använda de inbyggda typerna i modulen. I en .netmodule fil kan endast de hanterade typerna användas av ett C++-program. Om du försöker skicka en .obj fil till #using är information om inbyggda typer inte tillgänglig. I stället #include .obj filen .h .

Andra Visual Studio-kompilatorer kan bara använda hanterade typer från en modul.

Använd följande vägledning för att avgöra om du behöver använda en .netmodule fil eller en .obj fil som modulindata till MSVC-länkaren:

  • Om du skapar med en annan Visual Studio-kompilator än Visual C++, skapar du en .netmodule och använder som .netmodule indata till länkaren.

  • Om du använder MSVC-kompilatorn för att skapa moduler och om modulerna används för att skapa något annat än ett bibliotek använder du filerna .obj som skapas av kompilatorn som modulindata till länkaren. Använd .netmodule inte filen som indata.

  • Om dina moduler används för att skapa ett inbyggt (inte ett hanterat) bibliotek använder du .obj filer som modulindata till länkaren och genererar en .lib biblioteksfil.

  • Om dina moduler används för att skapa ett hanterat bibliotek, och om alla modulindata till länkaren är verifierbara (producerade med /clr:safe), använder du .obj filer som modulindata till länkaren och genererar en .dll (sammansättning) eller .netmodule (modul) biblioteksfil.

  • Om dina moduler används för att skapa ett hanterat bibliotek och om en eller flera moduler som matas in till länkaren skapas med bara /clranvänder du .obj filer som modulindata till länkaren och genererar en .dll (sammansättning). Om du vill exponera hanterade typer från biblioteket och om du också vill att C++-program ska använda de inbyggda typerna i biblioteket, består biblioteket av .obj filerna för bibliotekskomponentmodulerna. Du vill också skicka .h filerna för varje modul, så att de kan refereras till med #include från källkoden.

See also

.netmodule-filer som Linker-indata