Condividi tramite


Scelta del formato dei file di input con estensione netmodule

È possibile usare un file MSIL .obj (compilato con /clr) come .netmodule file. .obj i file contengono metadati e simboli nativi. .netmodules contengono solo metadati.

Passare un file MSIL .obj a qualsiasi altro compilatore di Visual Studio con l'opzione del /addmodule compilatore. Il .obj file diventa parte dell'assembly risultante e deve essere fornito con l'assembly. Ad esempio, Visual C# e Visual Basic hanno l'opzione del /addmodule compilatore.

Note

Nella maggior parte dei casi, è necessario passare al linker il .obj file dalla compilazione che ha creato il modulo .net. Il passaggio di un .dll file di modulo o .netmodule MSIL al linker potrebbe comportare LNK1107.

.obj i file, insieme ai relativi file associati .h , a cui si fa riferimento tramite #include nell'origine, consentono alle applicazioni C++ di utilizzare i tipi nativi nel modulo. In un .netmodule file, solo i tipi gestiti possono essere utilizzati da un'applicazione C++. Se si tenta di passare un .obj file a #using, le informazioni sui tipi nativi non sono disponibili. Al contrario, #include il .obj file del .h file.

Altri compilatori di Visual Studio possono utilizzare solo tipi gestiti da un modulo.

Usare le indicazioni seguenti per determinare se è necessario usare un .netmodule file o .obj come input del modulo per il linker MSVC:

  • Se si compila con un compilatore di Visual Studio diverso da Visual C++, generare e .netmodule usare come .netmodule input per il linker.

  • Se si usa il compilatore MSVC per produrre moduli e se i moduli vengono usati per compilare elementi diversi da una libreria, usare i .obj file prodotti dal compilatore come input del modulo per il linker. Non usare il .netmodule file come input.

  • Se i moduli vengono usati per compilare una libreria nativa (non gestita), usare .obj i file come input del modulo per il linker e generare un .lib file di libreria.

  • Se i moduli vengono usati per compilare una libreria gestita e se tutti gli input del modulo per il linker sono verificabili (prodotti con /clr:safe), usare .obj i file come input del modulo per il linker e generare un .dll file di libreria (assembly) o .netmodule (modulo).

  • Se i moduli vengono usati per compilare una libreria gestita e se uno o più moduli di input per il linker vengono prodotti con solo /clr, usare .obj i file come input del modulo per il linker e generare un .dll assembly . Se si desidera esporre i tipi gestiti dalla libreria e se si desidera che le applicazioni C++ consumino anche i tipi nativi nella libreria, la libreria è costituita dai .obj file per i moduli dei componenti delle librerie. Si vogliono anche spedire i .h file per ogni modulo, in modo che possano essere referenziati con #include dal codice sorgente.

See also

File con estensione netmodule come input del linker