试图在linux上使用mono编译x64应用程序会出现PE32Plus错误?

时间:2010-07-21 19:58:18

标签: c# linux mono file-type

完整错误是

  

错误CS8088:您的.NET运行时不支持“PE32Plus”。      请改用最新的Mono运行时。 (CS8088)(测试)

这是在x86_64 linux系统上,mono和monodevelop安装为x86_64。这种情况发生在我尝试编译为x64的任何应用程序中,包括一个空的测试程序。

我有单声道2.6.7安装和monodevelop 2.4.3,任何人都可以提供见解。

据我所知,PE32Plus是64位应用程序的文件类型,但mono的网站称它们支持x64环境

2 个答案:

答案 0 :(得分:2)

托管应用程序通过Linux上的“mono myApp.exe”运行。指定的'mono'版本确定应用程序是64位还是32位。如果使用32位单声道运行时,托管应用程序将以32位模式运行。如果使用64位单声道运行时,则托管应用程序将以64位模式运行。 Windows支持通过OS支持直接启动托管可执行文件,并使用平台信息确定是否将托管代码启动为32位或64位。

因此,平台信息仅在Windows上与.Net有关。 Mono忽略了这些信息。我相信最新的mono支持使用x64平台交换机进行编译。如果没有,可以将其编译为x86并使用64位单声道运行时运行它。

答案 1 :(得分:1)