functions funciones .net c++ dll interop

.net - funciones - user32 dll functions



Usando un.ll compiló dll dentro de c++ nativo (5)

como entiendo que cualquier programa .NET se compila en MSIL que se alimenta al CLR que lo compila en el código ensamblador y junto con la ayuda de JIT lo ejecuta.

Me preguntaba, ya que .NET es un envoltorio alrededor de la API de Win32 y el CLR finalmente convierte el MSIL en un programa de ensamblaje. ¿No es posible para mí escribir alguna funcionalidad en C #, hacer una dll y luego usar una herramienta que lo convierte en un archivo .net independiente completo para que pueda usar dentro de un código no administrado como en C o C ++.

¿Estoy hablando de Interops y COM? ¿No es esta idea diferente de eso? Mi objetivo es ejecutar un dll .NET en máquina que no tenga .NET framework.


No es una forma admitida y muchas funciones (como Reflection) se basan en metadatos proporcionados en un nivel más alto que el código de máquina sin procesar. Hay algunos programas (llamados enlazadores .NET) que podrían ayudar, pero no son 100% confiables.


Puede utilizar Native Image Generator (Ngen.exe) para compilar una DLL MSIL en una DLL de código nativo, pero esto no le permitirá ejecutarla en un sistema sin .NET Framework. Todavía tendrá referencias a otras DLL del marco e incluso si incluye estas DLL, no funcionará en un sistema sin .NET Framework, porque la infraestructura es más que una colección de DLL.


Si hurgas en la web, creo que hay una serie de herramientas para ''compilar'' .NET assemblies / code para eliminar su necesidad del framework. No estoy seguro de qué tan bien funcionan ...


Este artículo de KB explica una forma de llamar a los métodos administrados desde el código nativo. Sin embargo, aún necesita tener .NET Framework.


Este proyecto le permitirá realizar exportaciones no gestionadas .NET de métodos estáticos.