Can';t将MWArray.dll绑定到F#Interactive

Can';t将MWArray.dll绑定到F#Interactive,f#,matlab-deployment,f#-interactive,F#,Matlab Deployment,F# Interactive,我使用生成了一个.Net库。我设法在C#中毫无问题地使用了它,但我现在正尝试使用我在F#Interactive中创建的快速F#包装器进行一些测试 问题是,我似乎无法在F#Interactive中使用MWArray类 我设法使用#r命令引用DLL,但在打开命令后使用intellisense时,我找不到MathWorks域 此外,如果我运行代码,当流遇到MWArray时,会出现以下错误: 将会话绑定到“C:\Program Files\mypath\bin\Debug\MWArray.dll” 接

我使用生成了一个.Net库。我设法在C#中毫无问题地使用了它,但我现在正尝试使用我在F#Interactive中创建的快速F#包装器进行一些测试

问题是,我似乎无法在F#Interactive中使用
MWArray

我设法使用
#r
命令引用DLL,但在
打开
命令后使用intellisense时,我找不到
MathWorks

此外,如果我运行代码,当流遇到
MWArray
时,会出现以下错误:

将会话绑定到“C:\Program Files\mypath\bin\Debug\MWArray.dll”

错误FS0193:内部错误:无法加载文件或程序集的file:///C:\“程序文件\mypath\bin\Debug\MWArray.dll”或其依赖项之一。试图加载格式不正确的程序。 System.IO.FileNotFoundException:无法加载文件或程序集“MWARRARY,版本=2.11.0.0,区域性=中性,PublicKeyToken=e1d84a0da19db86f”或其依赖项之一。系统找不到指定的文件。 文件名:“MWARRY,版本=2.11.0.0,区域性=neutral,PublicKeyToken=e1d84a0da19db86f” (…)位于C:\Program Files\mypath\ScriptTest.fsx中的.FSI_0009.main@():第49行

警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会带来一些性能损失。 要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]

由于错误而停止

我真的不知道这是从哪里来的,也不知道如何解决这个问题

有人成功地使用了F#的MATLAB.Net库吗


你有什么建议可以帮我解决问题吗?

我不熟悉MatLab和.NET interop,但你检查过体系结构了吗?换句话说,请确保您没有尝试将64位DLL加载到32位进程中,反之亦然。此外,如果正在加载一个托管程序集,该程序集对本机程序集进行P/Invoke调用,则该本机DLL应位于当前FSI会话运行所在的目录中。您可以通过
System.Environment
类的
CurrentDirectory
属性检查和设置此值

我对F#interactive不太确定,但我刚刚制作了一个非常基本的F#3.0控制台应用程序,它使用了MWArray.dll和我用matlab NE builder编译的matlab函数

open makesquare
open MathWorks.MATLAB.NET.Arrays
[<assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")>] 
do()

[<EntryPoint>]
let main argv = 
    let stuff = new MLTestClass()
    let numArray = new MWNumericArray(5)
    let res = stuff.makesquare(1, numArray)
    let res_val = res.GetValue(0)
    printfn "%A" res_val
    System.Console.ReadKey()
    0 // return an integer exit code
openmakesquare
打开MathWorks.MATLAB.NET.Array
[

对于C#with.net 4++中的类似解决方案: