¿Cómo llamo al código .NET administrado desde mi código C ++ no administrado en Windows y viceversa?
Pregunta
Tengo una aplicación C ++ pura desarrollada usando VC 6.0. Me gustaría que esta aplicación haga uso de una biblioteca desarrollada en C #. ¿Cómo llamo a los métodos en la biblioteca de C # desde mi ejecutable nativo? No quiero convertir mi aplicación nativa de C ++ no administrada en código administrado. Del mismo modo, ¿cómo hago lo contrario? ¿PInvoke es la única opción? Agradecería cualquier referencia o puntero para el mismo.
Solución
Para llamar al código administrado desde C ++ no administrado, use ClrCreateManagedInstance , o exporte sus tipos en su ensamblado administrado como COM visible, y use COM. Para llamar al código no administrado desde administrado, use COM o P / Invoke.
Otros consejos
La línea principal de Microsoft en esto es usar interoperabilidad COM. Sin embargo, existe otra opción, a veces denominada & Quot; Invertir P / Invocar & Quot; hay una publicación de blog interesante aquí y algo más aquí
Además, si tiene Delphi.NET (ahora extinto) este lenguaje le permite exportar métodos estáticos como lo haría con cualquier función dll, entonces puede llamar al ensamblaje Delphi.NET como un Dll nativo normal.