Aquí es una solución. La solución permite llamar a una función C# desde C decorando su función con el atributo [DllExport] (opuesto a P/Invoke DllImport).
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
C# código
class Test
{
[DllExport("add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
código C
int main()
{
int z = add(5,10);
printf("The solution is found!!! Z is %i",z);
return 0;
}
Como @ iceflow19 comentado a continuación:
El autor del enlace proporciona un preprocesador CLR IL como un s agregado tep durante la compilación. Dado que los ensamblados utilizan el mismo formato de contenedor binario (DLL) en Windows, si agrega manualmente las compensaciones de funciones .Net en IL a la tabla (la lista de exportaciones de la DLL), Windows es lo suficientemente inteligente como para invocar la CLR para ejecutar ese código cuando se llama de C. Sin embargo, hay sobrecarga. Es una característica no anunciada. Así es como funcionan las bibliotecas administradas mixtas en C++/CLI. Para usarlo solo agrégalo a través de Nuget. El objetivo extra agregado en su archivo de proyecto de MSBuild proporcionará el paso de preprocesamiento de IL
Gracias por la ayuda, los examinaré en detalle y publicaré mi respuesta – sveerap
Gracias, probé la interoperabilidad COM y podría hacer una especie de aplicación hello world. – sveerap
Los enlaces para las API de One Code y CLR Hosting están rotos. ¿Puede proporcionar una actualización (no pude encontrar los enlaces correctos) –