Ensamblados mixtos (nativos y administrados)

Los ensamblados mixtos son capaces de contener tanto instrucciones máquina no administradas como instrucciones MSIL. Esto les permite no solo llamar a los componentes de .NET, sino también recibir llamadas de ellos, sin perder la compatibilidad con las bibliotecas nativas de C++. Los ensamblados mixtos permiten a los desarrolladores crear aplicaciones mediante una combinación de código de C++ nativo y .NET.

Por ejemplo, una biblioteca existente que sólo consta de código C++ nativo se puede llevar a la plataforma .NET volviendo a compilar sólo un módulo con el modificador de compilación /clr. Este módulo puede utilizar las características de .NET pero sigue siendo compatible con el resto de la aplicación. Incluso es posible decidir entre compilación administrada y nativa en cada una de las funciones del mismo archivo (vea managed, unmanaged).

Visual C++ solo admite la generación de ensamblados administrados mixtos mediante la opción del compilador /clr. Las opciones del compilador /clr:pure y /clr:safe están en desuso en Visual Studio 2015 y no se admiten en Visual Studio 2017. Si se necesitan ensamblados administrados puros o verificables, se recomienda crearlos mediante C#.

Las versiones anteriores del conjunto de herramientas del compilador de Microsoft C++ admitía la generación de tres tipos distintos de ensamblados administrados: mixtos, puros y verificables. Los dos últimos se describen en Código puro y verificable (C++/CLI).

En esta sección

Procedimiento para migrar a /clr
Describe los pasos recomendados para introducir o actualizar la funcionalidad de .NET en la aplicación.

Procedimiento para compilar código de MFC y ATL mediante /clr
Explica cómo compilar los programas MFC y ATL existentes para usarlos en Common Language Runtime.

Inicialización de ensamblados mixtos
Describe el problema del "bloqueo del cargador" y soluciones.

Compatibilidad con bibliotecas para ensamblados mixtos
Explica cómo utilizar bibliotecas nativas en compilaciones de /clr.

Consideraciones de rendimiento
Describe las implicaciones de rendimiento de los ensamblados mixtos y la serialización de datos.

Dominios de aplicación y Visual C++
Explica la compatibilidad de Visual C++ para dominios de aplicación.

Doble thunking
Trata de las implicaciones de rendimiento de un punto de entrada nativo para una función administrada.

Evitar excepciones al apagar CLR cuando se consumen objetos COM compilados con /clr
Explica cómo garantizar un apagado correcto de una aplicación administrada que utiliza un objeto COM compilado con /clr.

Cómo: Crear una aplicación de confianza parcial quitando la dependencia de la DLL de la biblioteca CRT
Explica cómo crear una aplicación de Common Language Runtime de confianza parcial mediante Visual C++ quitando la dependencia de msvcm90.dll.

Para más información sobre cómo codificar instrucciones para los ensamblados mixtos, consulte el artículo de introducción a la interoperabilidad del código administrado y no administrado.

Consulte también