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.