c++ mono lua embedding mono-embedding

c++ - Incrustación: mono vs lua



embedding mono-embedding (2)

Estoy interesado en conocer la experiencia de las personas con la incrustación mono (implementación de fuente abierta de .NET) en una aplicación C / C ++. ¿Cómo es distribuir tal aplicación y cuáles son las dependencias? He probado en OS X y mono viene como un gran marco (cientos de MB). ¿Los usuarios de mi aplicación necesitan este gran marco o se puede desmontar o compilar todo en el ejecutable principal?

Anteriormente tengo experiencia en incrustar Lua en una aplicación C ++, y eso funciona muy bien porque puedo vincular estáticamente todo el intérprete lua con mi ejecutable principal. Entonces no tengo dependencias externas. ¿Es posible hacer algo similar con mono?

¿Alguna gente Lua aquí que pueda comentar cómo encontraron mono en comparación con Lua?

PD: Al insertarlo me refiero a una aplicación C ++ que inicializa un entorno mono y carga un ensamblado .NET y lo ejecuta y luego permite la comunicación entre el código C # en ensamblaje y los métodos C ++ en el ejecutable principal.


Probablemente también deba echar un vistazo a la página de Small Footprint de Mono que describe cómo puede incorporar un tiempo de ejecución más pequeño. Diablos, lo hacen ellos mismos con Moonlight .

Espero que eso ayude.


Esta es una pregunta de 2 años. Entonces la situación puede volverse diferente ahora.

Para mí, el punto más importante fue GC. Integré Lua para aplicaciones interactivas y juegos, porque se requiere GC incremental. Actualmente Lua 5.1 tiene GC incremental preciso, pero no pude encontrar ninguna prueba de GC incremental o precisa en Mono. Así que la memoria se fugará (¡incluso es muy pequeña!), Y las aplicaciones tendrán problemas intermitentes.

La gente dice que la pausa del GC puede resolverse ajustando algunos parámetros y agrupando objetos, pero, como lo experimenté, nunca se resuelve sin ningún tipo de distribución carga de GC en el enfoque del tiempo en GC. Generational GC es uno de algoritmo de distribución, pero es demasiado rudo y casi no útil.

Porque no puede controlar el patrón de vida útil ni reutilizar la instancia agrupando los objetos utilizados en el código que no es el suyo. (como biblioteca de clases básica)

Por lo tanto, no recomiendo la plataforma C # (Mono o .NET, al menos aún) para aplicaciones interactivas / (software) en tiempo real.

Editar

No sé si se presenta un GC incremental / simultáneo en Mono o .NET. Si puede estar seguro de que ofrecen el tipo de GC, por supuesto, está bien usar :)