我试图使用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 ---
有什么想法吗? 谢谢 安德烈
答案 0 :(得分:0)
我的猜测是,如果调用C运行时的函数(即非.NET,如printf
),Visual C ++编译器生成的代码将使用MSVCRT。为了能够在Linux上运行Mono,您应该只使用.NET框架类(例如System.Console.WriteLine
用于控制台输出而不是printf
)。
答案 1 :(得分:0)
我相信阅读Mono-C++可能会帮助您解决问题。查看有关C ++支持的底部以及运行C ++代码的问题。