2009-10-28 20 views
5

¿Cómo puedo llamar a un código .NET desde C++ nativo (código no administrado)? Quiero exponer el código .NET a mi aplicación no administrada (C++) y luego usarlos. Más específicamente, quiero llamar a C# desde C++ nativo :). Sé que hay muchas formas, pero ¿puedes decirme los pros y los contras de cada una? Por cierto, no quiero usar COM entonces, ¿cuáles son las opciones ahora?¿Cómo usar el código administrado del código no administrado?

¿Es posible que envuelva el código C# en C++/CLI y luego lo llame desde C++? Si es así, ¿cómo hago eso? ¿Cómo envuelvo el C# en C++/CLI y luego lo llamo desde C++?

+0

posible duplicación de [Exportación de funciones dll a programas no administrados] (http://stackoverflow.com/questions/12647766/exporting-dll-functions-to-unmanaged-programs) – Rohit

Respuesta

0

Puede expose el componente administrado como objeto COM.

5

que he escrito sobre ello recientemente. Se trataba de Delphi, pero eso no significa que tampoco funcionará con C++.

.NET component in DELPHI 2009

Incluso sin saber mucho sobre C++, todavía sé que las referencias de interfaz compatible con COM IUnknown y debe ser utilizable bien de C++ (en el caso de tener que pasar objetos, no sólo las estructuras).

  • Puede usar la C++/CLI de Microsoft para hacer referencia a su código C# y exportarlo como funciones DLL ordinarias.
  • También puede descargar un MSBuild task que escribí, que le permite exportar la función directamente desde C#. Análogamente a cómo se usa DllImportAttribute.

Este código C# sería exportar una función "YourExportName" que se puede utilizar como cualquier función compatible con c serían utilizados.


class Sample 
{ 
    [DllExport("YourExportName")] 
    static int TestFunction(int left, int right) 
    { 
    return left + right; 
    } 
} 
1

siempre se puede incrustar Mono. Personalmente lo he hecho en dos proyectos hasta ahora y es bastante fácil. Siga Embedding Mono para más información.

Cuestiones relacionadas