Escolha o formato. netmodule arquivos de entrada

Um arquivo. obj do MSIL (compilado com /clr) também pode ser usado como um. arquivo netmodule. os arquivos. obj contêm metadados e símbolos nativos. . netmodules só contêm metadados.

Você pode passar de um arquivo. obj MSIL para qualquer outro compilador Visual Studio por meio da opção de compilador /addmodule (mas lembre-se de que o arquivo. obj se torna parte do assembly resultante e deve ser fornecido com o assembly). Por exemplo, o Visual C# e Visual Basic têm a opção de compilador /addmodule.

ObservaçãoObservação

Na maioria dos casos, você precisará passar para o vinculador do arquivo. obj de compilação que criou o. módulo de rede. Uma exceção é se o. netmodule foi criado com /clr: puro. Passando uma. dll ou. arquivo de módulo netmodule MSIL para o vinculador pode resultar em LNK1107.

arquivos. obj, juntamente com seus arquivos. h de associado, que é referência via # incluir na fonte, permitem que os aplicativos C++ consumir os tipos nativos no módulo, enquanto em um. arquivo netmodule, somente os tipos gerenciados podem ser consumidos por um aplicativo de C++. Se você tentar passar de um arquivo. obj para # using, informações sobre tipos nativos não estará disponíveis; # include em vez disso, o arquivo. h do arquivo. obj.

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

Use o seguinte para determinar se você precisa usar um. netmodule ou um arquivo. obj como entrada de módulo para o vinculador do Visual C++:

  • Se você estiver criando com um compilador Visual Studio diferente, por exemplo, Visual C++, produzir um. netmodule e usar o. netmodule como entrada para o vinculador.

  • Se você estiver usando o compilador Visual C++ para produzir os módulos e se os módulos serão usados para criar algo diferente de uma biblioteca, use os arquivos. obj, produzidos pelo compilador, como entrada de módulo para o vinculador; não use o. netmodule o arquivo como entrada.

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

  • Se os seus módulos serão usados para criar uma biblioteca gerenciada, e todas as entradas de módulo para o vinculador será verificável (produzida com /CLR: safe), use arquivos. obj como entrada de módulo para o vinculador e gerar um arquivo. dll (assembly) ou. arquivo de biblioteca netmodule (módulo).

  • Se os seus módulos serão usados para criar uma biblioteca gerenciada e todas as entradas de módulo para o vinculador serão produzida com o /clr: puro ou /CLR: safe, use arquivos. obj como entrada de módulo para o vinculador e gerar um arquivo. dll (assembly) ou. netmodule (módulo), se você quiser expor os tipos gerenciados a partir da biblioteca. Se você deseja expor tipos gerenciados a partir da biblioteca e se deseja também aplicativos C++ para consumir os tipos nativos na biblioteca, sua biblioteca consistirá em arquivos. obj para os módulos de componente de bibliotecas (você também desejará enviar os arquivos. h para cada módulo, para que eles podem ser referenciados com # incluir código-fonte).

  • Se os seus módulos serão usados para criar uma biblioteca gerenciada, e um ou mais entradas de módulos para o vinculador serão produzida com o /clr apenas, use arquivos. obj como entrada de módulo para o vinculador e gerar um arquivo. dll (assembly). Se você deseja expor tipos gerenciados a partir da biblioteca e se deseja também aplicativos C++ para consumir os tipos nativos na biblioteca, sua biblioteca consistirá em arquivos. obj para os módulos de componente de bibliotecas (você também desejará enviar os arquivos. h para cada módulo, para que eles podem ser referenciados com # incluir código-fonte).

Consulte também

Referência

arquivos. netmodule como entrada de vinculador