2014-10-30 79 views
0

我有一个非常简单的程序:是否有可能在x86上强制启动单声道运行时?

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine(IntPtr.Size); 
    } 
} 

让我们从单声道编译器作为应用程序的x86建立它,并在x64单运行:

$ 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 

单已成功推出该计划。但它已经启动了我的程序作为一个x64应用程序。如果我使用Microsoft .NET Runtime在Windows上运行此二进制文件,则在控制台输出中会得到4(它将作为x86应用程序运行)。那么,是否有可能强制将单声道运行时启动为x86?

回答

1

的-platform:86标志是编译器。它与单声道运行时分配给程序的内存空间无关。如果你想运行64位的程序,你可以使用64位的单声道运行时。如果你想运行32位的程序,你可以使用32位的单声道运行时。

这个问题是这样的Mono interop: Loading 32bit shared library does not work on my 64bit system

+0

重复顺便说一句,我想指出的是,我花了大约一个小时看单源代码,看看是否有可以帮助你。所以我不只是盲目地粘贴链接问题的答案并声明重复。我其实看起来;) – Mystra007 2014-12-09 22:44:17

相关问题