c# - tutorial - que es mejor co c++
Llamando al código C#de C++ (6)
Necesito poder invocar funciones C # arbitrarias desde C ++. http://www.infoq.com/articles/in-process-java-net-integration sugiere el uso de ICLRRuntimeHost :: ExecuteInDefaultAppDomain () pero esto solo me permite invocar métodos con este formato: int method(string arg)
¿Cuál es la mejor forma de invocar funciones arbitrarias de C #?
Como enfoque alternativo, puede usar Lua para crear una instancia de los objetos CLR, ejecutar y devolver los resultados.
Compila tu código C ++ con el indicador / clr . Con eso, puede llamar a cualquier código .NET con relativa facilidad.
Por ejemplo:
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
System::DateTime now = System::DateTime::Now;
printf("%d:%d:%d/n", now.Hour, now.Minute, now.Second);
return 0;
}
¿Esto cuenta como "C ++"? Bueno, obviamente no es estándar C ++ ...
Hay varias formas en que una aplicación C ++ puede invocar funciones en una DLL C #.
- Usando C ++ / CLI como un DLL intermedio
- Invertir P / Invocar
- Usando COM
- Uso de CLR Hosting (
ICLRRuntimeHost::ExecuteInDefaultAppDomain()
) - Comunicación entre procesos (IPC)
- Cómo invocar remotamente otro método de proceso desde la aplicación C #
- http://www.codeproject.com/Tips/420582/Inter-Process-Communication-between-Csharp-and-Cpl
La forma más fácil es usar interoperabilidad COM.
Podría usar un contenedor COM llamable alrededor de su código C # compilado en una DLL.
Si no le importa si su programa C ++ (o una parte de él) se compila con / clr, puede usar C ++ / CLI para simplemente llamar a cualquier código .NET (siempre que agregue una referencia). Pruebe este artículo .
EDITAR: Aquí hay un buen tutorial
La otra ruta es hacer que su código C # se exponga como COM.