Assemblies mistos (nativos e gerenciados)

Assemblies mistos são capazes de conter instruções de computador não gerenciadas e instruções MSIL. Isso permite que eles chamem e sejam chamados por componentes do .NET, mantendo a compatibilidade com bibliotecas C++ nativas. Usando assemblies mistos, os desenvolvedores podem criar aplicativos com uma combinação de código .NET e C++ nativo.

Por exemplo, uma biblioteca existente que consiste inteiramente em código C++ nativo pode ser trazida para a plataforma .NET recompilando apenas um módulo com o comutador do compilador /clr. Esse módulo é capaz de usar recursos do .NET, mas permanece compatível com o restante do aplicativo. É possível até mesmo decidir entre a compilação gerenciada e nativa em uma base função por função dentro do mesmo arquivo (consulte gerenciado, não gerenciado).

O Visual C++ permite apenas à geração de assemblies gerenciados mistos usando a opção do compilador /clr. As opções do compilador /clr:pure e /clr:safe foram preteridas no Visual Studio 2015 são incompatíveis com o Visual Studio 2017. Se você precisar de assemblies gerenciados puros ou verificáveis, recomendamos criá-los usando C#.

Versões anteriores do conjunto de ferramentas do compilador do Microsoft C++ permitem a geração de três tipos distintos de assemblies gerenciados: mistos, puros e verificáveis. Os dois últimos são discutidos no Código Puro e Verificável (C++/CLI).

Nesta seção

Como migrar para /clr
Descreve as etapas recomendadas para introduzir ou atualizar a funcionalidade do .NET no seu aplicativo.

Como compilar código MFC e ATL usando /clr
Discute como compilar programas MFC e ATL existentes para direcionar o Common Language Runtime.

Inicialização de assemblies mistos
Descreve o problema e as soluções de "bloqueio do carregador".

Suporte de biblioteca para assemblies mistos
Discute como usar bibliotecas nativas em compilações /clr.

Considerações sobre desempenho
Descreve as implicações de desempenho de assemblies mistos e marshaling de dados.

Domínios de aplicativo e Visual C++
Discute o suporte do Visual C++ para domínios de aplicativo.

Conversão dupla
Discute as implicações de desempenho de um ponto de entrada nativo para uma função gerenciada.

Evitando exceções no desligamento do CLR durante o consumo dos objetos COM criados com /clr
Discute como garantir o desligamento adequado de um aplicativo gerenciado que consome um objeto COM compilado com /clr.

Como criar um aplicativo parcialmente confiável removendo a dependência da DLL da biblioteca CRT
Discute como criar um aplicativo de Common Language Runtime parcialmente confiável usando o Visual C++ removendo a dependência de msvcm90.dll.

Para obter mais informações sobre diretrizes de codificação para assemblies mistos, consulte Uma visão geral da interoperabilidade de código gerenciado/não gerenciado.

Confira também