C# でいくつかの matlab 関数を使用しています。関数をdllに変換すると、2つのdllがあります。1 つは Entropy.dll で、もう 1 つは EntropyNative.dll です。
Entropy.dll を使用する場合、MCR でのみ動作する MWArray クラスが必要なため、MATLAB コンパイラ ランタイム (MCR) をターゲット コンピューターにインストールする必要があります。ただし、ターゲット コンピューターに MCR をインストールしたくないので、Object
代わりMWArray
にパラメーターとして受け取る EntropyNative.dll を使用しようとしました。したがって、各コンピューターに MCR をインストールする必要はありません。ただし、ネイティブ dll を使用すると、MWMCR:EvaluateFunction error.
発生します。つまり、メモリ不足の例外です。ファイル サイズと機能は同じですが、ネイティブ dll を使用するとこのエラーが発生するのはなぜですか?
この (Entropy.dll) は機能し、エラーは発生しません。
MWNumericArray arr1 = null;
Entropy ent = new Entropy(); //Matlab function.
while(true)
{
double[] arraySegment = new double[window];
arr1=arraySegment;
MWArray function1Result = ent.function1(arr1);
MWArray function2Result = ent.function2(arr1);
arr1=null;
}
EntropyNative.dll を使用すると、メモリ不足エラーが発生します
Entropy ent = new Entropy();
while(true)
{
double[] arraySegment = new double[window];
double function1Result = ent.function1(arraySegment);
double function2Result = ent.function2(arraySegment);
}
Native dll を使用したいのですが、どうすればこのエラーを解消できますか? GarbageCollector を強制しようとしましたが、役に立ちません。また、試してみent.WaitForFiguresToDie()
ましent.Dispose()
た。
ent.WaitForFiguresToDie(): このメソッドは、MATLAB Figure ウィンドウをモーダル ダイアログ ボックスとして動作させます。このコンポーネントに関連付けられているすべての Figure ウィンドウが閉じられるまで、メソッドは戻りません。