2011-12-14 14 views
1

MATLAB .Net Builderを使用して.Netライブラリを生成しました。私はC#で問題なく使用できましたが、F#Interactiveで作成した簡単なF#ラッパーを使っていくつかのテストをしようとしています。MWArray.dllをF#Interactiveにバインドできません

問題は、F#InteractiveでMWArrayクラスを使用することができないようです。

#rコマンドを使用してDLLを参照することができましたが、openコマンドの後にintellisenseを使用すると、MathWorksドメインが見つかりません。私は私のコードを実行した場合、フローはMWArrayに遭遇したとき

はさらに、私は次のエラーを取得する:

error FS0193: internal error: Could not load file or assembly 'file:///C:\Program Files\mypath\bin\Debug\MWArray.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. System.IO.FileNotFoundException: Could not load file or assembly 'MWArray, Version=2.11.0.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' or one of its dependencies. The system cannot find the file specified. File name: 'MWArray, Version=2.11.0.0, Culture=neutral, PublicKeyToken=e1d84a0da19db86f' (...) at [email protected]() in C:\Program Files\mypath\ScriptTest.fsx:line 49

WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Stopped due to error

続い

Binding session to 'C:\Program Files\mypath\bin\Debug\MWArray.dll'...

私は本当にこれはから来ている見当がつかないし、どのように問題を解決するか。

F#のMATLAB .Netライブラリの使用に成功した人はいますか?

私の問題を解決するための助言がありますか?

答えて

2

私はMatLabと.NETの相互運用性に慣れていませんが、アーキテクチャをチェックしましたか?言い換えれば、64ビットDLLを32ビットプロセスにロードしようとしていないことを確認してください。また、ネイティブアセンブリへのP/Invoke呼び出しを行うマネージアセンブリをロードする場合、そのネイティブDLLは、現在のFSIセッションが実行されているディレクトリに存在する必要があります。 System.EnvironmentクラスのCurrentDirectoryプロパティでこの値をチェックして設定することができます。

0

私はF#のの-interactiveわからないけど、私はただMWArray.dllと私はMatlabのNEビルダーでコンパイルされたMATLAB関数を使用して、非常に基本的なF#3.0コンソールアプリケーションを作成するために管理している...

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 

makesquare機能は、.NETとC#で同様の溶液については、このチュートリアル http://www.mathworks.se/help/dotnetbuilder/ug/create-a-net-component-from-matlab-code.html

で行わ単純な関数である4 +: use .net 2.0 dll in .net 4.5 project (vshost crashes on debug)

関連する問題