Pergunta

Estou interessado em ouvir sobre povos experiência com a incorporação de mono (implementação open source do .NET) em aplicação de um C / C ++. Como é para distribuir aplicação tal e quais são as dependências? Eu testei no OS X e mono vem como uma enorme estrutura (centenas de MB). Os usuários do meu aplicativo toda a necessidade deste quadro grande ou pode ser simplificada ou tudo ser compilado para o executável principal.

Eu já tenho experiência com a incorporação de Lua em um C ++ aplicativo, e que funciona muito bem, porque eu posso vincular estaticamente todo o interpretador Lua com o meu executável principal. Então, eu tenho nenhuma dependência externa. É possível fazer algo semelhante com mono?

Qualquer Lua pessoas aqui que podem comentar sobre como eles encontraram mono comparado a Lua?

PS:. Ao incorporar quero dizer um C ++ aplicativo que inicializa um ambiente mono e carrega um .NET assembly e executa-lo e, em seguida, permite a comunicação entre dizer código C #, em métodos de montagem e C ++ no executável principal

Foi útil?

Solução

Você provavelmente deve também dar uma olhada em página Footprint pequeno de Mono que descreve como você pode incorporar um tempo de execução mais pequeno. Heck, eles fazê-lo-se com luar .

Espero que ajuda.

Outras dicas

Este é de 2 anos velha questão. Assim situação pode tornar-se diferente agora.

Para mim, o ponto mais importante foi GC. I incorporado Lua para interativo aplicativos e jogos, porque GC incrementais necessário. Atualmente Lua 5.1 tem GC preciso, incremental, mas eu não poderia encontrar qualquer prova de GC incremental ou precisas sobre Mono. Assim, a memória vai vazar (mesmo que é muito pequena!), E aplicativos vai lutar de forma intermitente.

Pessoas diz GC pausa pode ser resolvido por meio do ajuste de alguns parâmetros e reunindo objetos, mas como eu experimentei, ele não ser resolvido sem qualquer tipo de carga de distribuição GC ao longo do tempo abordar em GC. Geracional GC é um dos algoritmo de distribuição, mas é muito áspero, e quase não é útil.

Porque você não pode controlar padrão de vida ou instância reutilização, reunindo os objetos usados ??no código que não o seu. (Tais como biblioteca de classe básica)

Então, eu não recomendo a plataforma C # (Mono ou .NET, pelo menos ainda) para / interativo (suave) aplicativos em tempo real.


Editar

Eu não sei se qualquer incrementais / concorrente aproximou GC é apresentado em Mono ou .NET. Se você pode certeza sobre eles oferecem o tipo de GC, é claro, não há problema em usar :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top