我有一个非常简单的程序:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine(IntPtr.Size);
}
}
让我们用单声道编译器构建它作为x86应用程序并在x64 mono上运行它:
$ uname -srvmpio ; lsb_release -d
Linux 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Description: Ubuntu 14.04.1 LTS
$ mono --version
Mono JIT compiler version 3.10.0 (tarball Mon Oct 27 14:33:41 IST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
$ mcs -platform:x86 Program.cs
$ mono Program.exe
8
Mono已成功推出该计划。但它已将我的程序作为x64应用程序启动。如果我在Windows上使用Microsoft .NET Runtime运行此二进制文件,我在控制台输出中得到4
(它将作为x86应用程序运行)。那么,可以强制启动单声道运行时作为x86?
答案 0 :(得分:1)
-platform:x86标志用于编译器。它与单声道运行时分配给程序的内存空间无关。如果要将程序作为64位运行,则使用64位单声道运行时。如果要将程序作为32位运行,则使用32位单声道运行时。
因此,此问题与Mono interop: Loading 32bit shared library does not work on my 64bit system
重复