Partilhar via


Montagens mistas (nativas e geridas)

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

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

Visual C++ só suporta a geração de assemblies gerenciados mistos usando a opção de compilador /clr . As opções do compilador /clr:pure e /clr:safe foram preteridas no Visual Studio 2015 e não têm suporte no 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 Microsoft C++ suportavam a geração de três tipos distintos de assemblies gerenciados: misto, puro e verificável. Os dois últimos são discutidos em Código Puro e Verificável (C++/CLI).

Nesta secção

Como: Migrar para /clr
Descreve as etapas recomendadas para introduzir ou atualizar a funcionalidade .NET em 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 do "bloqueio do carregador".

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

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

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

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

Evitando exceções no desligamento do CLR ao consumir 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 na DLL da biblioteca CRT
Discute como criar um aplicativo 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 Visão geral da interoperabilidade de código gerenciado/não gerenciado.

Ver também