5

以下は、複雑さのために賞を受賞しないコードの一部です。

[<EntryPoint>]
let main argv =
   let i = 1I
   printfn "One is %A\n" i
   0 // return an integer exit code

次のようにコンパイルされます: "c:/Program Files (x86)/Microsoft SDKs/F#/3.0/Framework/v4.0/Fsc.exe" --out:numericstest.exe --debug:full --target:exe - -スタンドアロン Program.fs

Windows では、期待どおりの結果が得られます。ただし、Ubuntu でコンパイルされた Mono 3.0.7 では、代わりに次のように表示されます。

mono numericstest.exe

Unhandled Exception: System.InvalidProgramException: Invalid IL code in System.Numerics.BigInteger:get_One (): method body is empty.

at Program.main (System.String[] argv) [0x00000] in <filename unknown>:0[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidProgramException: Invalid IL code in System.Numerics.BigInteger:get_One (): method body is empty.

at Program.main (System.String[] argv) [0x00000] in <filename unknown>:0

私は何を間違っていますか?どうもありがとう。

4

1 に答える 1

2

あなたのコードには何も問題はありません。その例外はとにかくあなたのコードによるものです。System.Numerics.dllマシンのアセンブリに問題があるようです。正しくインストールされていないか、(Mono C# コンパイラなどによって) 正しくコンパイルされていないか、何らかの種類の型転送を実行していて、本来の動作をしていないかのいずれかです。

I(サフィックスを介して) BigInteger を使用せずにコードを実行するとどうなりますか?


VirtualBoxで実行されているUbuntu(12.04、32ビット)VMでコードを試しました。コードがコンパイルされ、期待どおりに実行されました。必要な場合の出力は次のとおりです。

コンパイル/実行

jack@jack-linux:~/Desktop$ fsharpc --out:JoeHuha.exe --debug:full --target:exe --standalone JoeHuha.fs
F# Compiler for F# 3.0 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License
jack@jack-linux:~/Desktop$ mono JoeHuha.exe
One is 1

モノのバージョン情報

jack@jack-linux:~/Desktop$ mono -V
Mono JIT compiler version 3.0.5 (master/1643364 Fri Feb 22 19:31:07 EST 2013)
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  x86
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            Included Boehm (with typed GC and Parallel Mark)
于 2013-04-26T22:55:42.433 に答える