Partager via


Choix du format des fichiers d’entrée .netmodule

Vous pouvez utiliser un fichier MSIL .obj (compilé avec /clr) comme .netmodule fichier. .obj les fichiers contiennent des métadonnées et des symboles natifs. .netmodules contiennent uniquement des métadonnées.

Transmettez un fichier MSIL .obj à tout autre compilateur Visual Studio avec l’option du /addmodule compilateur. Le .obj fichier fait partie de l’assembly résultant et doit être fourni avec l’assembly. Par exemple, Visual C# et Visual Basic ont l’option du /addmodule compilateur.

Note

Dans la plupart des cas, vous devez passer au linker le .obj fichier à partir de la compilation qui a créé le module .net. Le passage d’un .dll fichier de module MSIL .netmodule à l’éditeur de liens peut entraîner LNK1107.

.obj les fichiers, ainsi que leurs fichiers associés .h , que vous référencez via #include dans la source, permettent aux applications C++ d’utiliser les types natifs dans le module. Dans un .netmodule fichier, seuls les types managés peuvent être consommés par une application C++. Si vous tentez de transmettre un .obj fichier à #using, les informations sur les types natifs ne sont pas disponibles. Au lieu de cela, #include le .obj fichier du .h fichier.

D’autres compilateurs Visual Studio peuvent uniquement utiliser des types managés à partir d’un module.

Utilisez les conseils suivants pour déterminer si vous devez utiliser un ou un .netmodule.obj fichier comme entrée de module dans l’éditeur de liens MSVC :

  • Si vous créez avec un compilateur Visual Studio autre que Visual C++, créez une .netmodule entrée et utilisez l’entrée .netmodule pour l’éditeur de liens.

  • Si vous utilisez le compilateur MSVC pour produire des modules et si les modules sont utilisés pour générer quelque chose d’autre qu’une bibliothèque, utilisez les .obj fichiers produits par le compilateur comme entrée de module pour l’éditeur de liens. N’utilisez pas le .netmodule fichier comme entrée.

  • Si vos modules sont utilisés pour générer une bibliothèque native (et non gérée), utilisez .obj des fichiers comme entrée de module pour l’éditeur de liens et générez un .lib fichier de bibliothèque.

  • Si vos modules sont utilisés pour générer une bibliothèque managée et si toutes les entrées de module à l’éditeur de liens sont vérifiables (produites avec /clr:safe), utilisez .obj des fichiers comme entrée de module pour l’éditeur de liens et générez un .dll fichier de bibliothèque (assembly) ou .netmodule (module).

  • Si vos modules sont utilisés pour générer une bibliothèque managée et si une ou plusieurs entrées de modules à l’éditeur de liens sont produites avec uniquement /clr, utilisez .obj des fichiers comme entrée de module pour l’éditeur de liens et générez un .dll (assembly). Si vous souhaitez exposer des types managés à partir de la bibliothèque et si vous souhaitez également que les applications C++ consomment les types natifs dans la bibliothèque, votre bibliothèque se compose des .obj fichiers des modules de composant bibliothèques. Vous souhaitez également expédier les .h fichiers pour chaque module afin qu’ils puissent être référencés avec #include à partir du code source.

See also

Fichiers .netmodule en tant qu’entrée de l’Éditeur de liens