Partilhar via


Escolhendo o formato dos arquivos de entrada .netmodule

Você pode usar um arquivo MSIL .obj (compilado com /clr) como um .netmodule arquivo. .obj Os ficheiros contêm metadados e símbolos nativos. .netmodules contêm apenas metadados.

Passe um arquivo MSIL .obj para qualquer outro compilador do Visual Studio com a opção de /addmodule compilador. O .obj arquivo torna-se parte da montagem resultante e deve ser enviado com a montagem. Por exemplo, Visual C# e Visual Basic têm a /addmodule opção de compilador.

Note

Na maioria dos casos, você precisa passar para o vinculador o .obj arquivo da compilação que criou o módulo .net. Passar um .dll arquivo de módulo ou .netmodule MSIL para o vinculador pode resultar em LNK1107.

.obj arquivos, juntamente com seus arquivos associados .h , que você referencia via #include na origem, permitem que os aplicativos C++ consumam os tipos nativos no módulo. Em um .netmodule arquivo, somente os tipos gerenciados podem ser consumidos por um aplicativo C++. Se você tentar passar um .obj arquivo para #using, as informações sobre tipos nativos não estarão disponíveis. Em vez disso, #include o .obj arquivo do .h arquivo.

Outros compiladores do Visual Studio só podem consumir tipos gerenciados de um módulo.

Use as diretrizes a seguir para determinar se você precisa usar um .netmodule ou um .obj arquivo como entrada de módulo para o vinculador MSVC:

  • Se você estiver criando com um compilador do Visual Studio diferente do Visual C++, produza um .netmodule e use o .netmodule como entrada para o vinculador.

  • Se você estiver usando o compilador MSVC para produzir módulos e se os módulos forem usados para construir algo diferente de uma biblioteca, use os .obj arquivos produzidos pelo compilador como entrada de módulo para o vinculador. Não use o .netmodule arquivo como entrada.

  • Se os módulos forem usados para criar uma biblioteca nativa (não gerenciada), use .obj arquivos como entrada de módulo para o vinculador e gere um arquivo de .lib biblioteca.

  • Se os módulos forem usados para criar uma biblioteca gerenciada, e se toda a entrada do módulo no vinculador for verificável (produzida com /clr:safe), use .obj arquivos como entrada de módulo para o vinculador e gere um arquivo de .dll biblioteca (assembly) ou .netmodule (módulo).

  • Se os módulos forem usados para construir uma biblioteca gerenciada, e se uma ou mais entradas de módulos para o vinculador forem produzidas apenas com /clr, use .obj arquivos como entrada de módulo para o vinculador e gere um .dll (assembly). Se você quiser expor tipos gerenciados da biblioteca e se também quiser que os aplicativos C++ consumam os tipos nativos na biblioteca, sua biblioteca consiste nos arquivos para os módulos do componente bibliotecas .obj . Você também deseja enviar os .h arquivos para cada módulo, para que eles possam ser referenciados com #include do código-fonte.

See also

Arquivos .netmodule como entrada do vinculador