使用mono运行visual studio可执行文件的问题

时间:2011-05-16 20:15:21

标签: c++ visual-studio-2010 mono

我试图使用visual studio 2010创建的Mono可执行文件。 VS 2010中的设置是: -c ++项目 -cil pure

我的最终目标是使用visual studio 2010编译Parsec基准测试,然后在Windows和Linux中运行带有mono的可执行文件。

到目前为止,我创建了一个简单的c ++项目,仅包含printf。 可执行文件在windows下使用mono运行公平,而它在linux下给了我许多问题

这就是我得到的:

** (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 ---

有什么想法吗? 谢谢 安德烈

2 个答案:

答案 0 :(得分:0)

我的猜测是,如果调用C运行时的函数(即非.NET,如printf),Visual C ++编译器生成的代码将使用MSVCRT。为了能够在Linux上运行Mono,您应该只使用.NET框架类(例如System.Console.WriteLine用于控制台输出而不是printf)。

答案 1 :(得分:0)

我相信阅读Mono-C++可能会帮助您解决问题。查看有关C ++支持的底部以及运行C ++代码的问题。