Problemas al ejecutar ejecutables de Visual Studio con mono

Estoy tratando de ejecutar con archivos ejecutables Mono creados por Visual Studio 2010. La configuración en VS 2010 es: -c ++ project -cil pure

Mi objetivo final es compilar los puntos de referencia de Parsec usando Visual Studio 2010 y luego ejecutar los ejecutables con mono tanto en Windows como en Linux.

A estas alturas, creé un proyecto c ++ simple que incluye solo un printf. El ejecutable funciona correctamente con mono en Windows, mientras que me devuelve muchos problemas en Linux.

esto es lo que obtengo:

** (thread.exe:1424): WARNING **: Missing method .ctor in assembly /home/chezz/Scrivania/thread.exe, type System.Runtime.CompilerServices.FixedAddressValueTypeAttribute

** (thread.exe:1424): WARNING **: Can't find custom attr constructor image: /home/chezz/Scrivania/thread.exe mtoken: 0x0a00000d

Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for <Module> ---> <CrtImplementationDetails>.ModuleLoadException: The C++ module failed to load.
 ---> System.MissingMethodException: Method not found: 'System.AppDomain.IsDefaultAppDomain'.
  at <Module>.<CrtImplementationDetails>.LanguageSupport.Initialize (<CrtImplementationDetails>.LanguageSupport* ) [0x00000] 
  --- End of inner exception stack trace ---
  at <Module>.<CrtImplementationDetails>.ThrowModuleLoadException (System.String errorMessage, System.Exception innerException) [0x00000] 
  at <Module>.<CrtImplementationDetails>.LanguageSupport.Initialize (<CrtImplementationDetails>.LanguageSupport* ) [0x00000] 
  at <Module>..cctor () [0x00000] 
  --- End of inner exception stack trace ---

¿Alguna idea? Gracias Andrea

preguntado el 16 de mayo de 11 a las 20:05

Si escribe código C ++, ¿por qué insiste en compilar en IL? ¿Y estás seguro de que Mono ejecuta tu programa y no el marco .NET? -

Se me pidió que hiciera este tipo de trabajo para mi trabajo de tesis, con el fin de admitir pthread en la compilación multiplataforma, también probé el ejecutable con MoMA y envió buenos comentarios para Windows:

2 Respuestas

Supongo que el código que genera el compilador de Visual C ++ usará MSVCRT si llama a funciones que están en C Runtime (es decir, que no son .NET, como printf). Para poder ejecutar en Mono en Linux también, solo debe usar las clases de marco .NET (por ejemplo System.Console.WriteLine para salida de consola en lugar de printf).

contestado el 17 de mayo de 11 a las 21:05

Yo creo leyendo Mono-C ++ podría ayudarlo con su problema. Mire hacia abajo sobre la compatibilidad con C ++ y el problema con la ejecución de código C ++.

contestado el 20 de mayo de 11 a las 05:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.