1

我从一本关于 F# 的书中制作了一个小型应用程序,但是当我调用 rand.NextDouble() 方法时,它会抛出一个 BadImageFormatException,乍一看它似乎与图像有关,所以我不知道我应该做什么在这里做。

我正在使用 Visual F# 2013 使用 VS community 2013。我有 64 位 Windows 7

我知道通过尝试单独的 let 是 nextdouble 方法的问题

let create_field num_asteroids =
    let lerp (x: float<'u>) (y:float<'u>) (a:float) =
        x*a+y*(1.0-a)

    let rand = Random()

    [for i =1 to num_asteroids do
        let m =
            (lerp earth_mass moon_mass (rand.NextDouble()))*
            1.0e-4
        let x = lerp 0.0<m> field_size (rand.NextDouble())
        let y = lerp 0.0<m> field_size (rand.NextDouble())
        let vx = max_velocity*(rand.NextDouble()*2.0-1.0)*0.1
        let vy = max_velocity*(rand.NextDouble()*2.0-1.0)*0.1
        yield
            {
            Position = { X = x; Y = y }
            Velocity = { X = vx; Y = vy }
            Mass = m
            Name = "a"
            }
    ]

这是错误代码:

System.BadImageFormatException 未处理 消息:Asteroid_Field_1.exe 中发生“System.BadImageFormatException”类型的未处理异常附加信息:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)

MSDN 告诉我它可能与未以正确格式加载的 DLL 文件有关,但我什至不知道从哪里开始。

http://pastebin.com/7LhCHr3c

这是完整的代码

我刚刚在 FSI.exe 中尝试过,它在那里工作得很好

4

1 回答 1

0

我通过检查 Visual Studio 中项目属性中的“优化代码”解决了这个问题。我从一个同学那里得到了这个修复。

于 2015-10-04T11:20:24.077 回答