2

我在 c# 中使用了一些 matlab 函数。当我将函数转换为 dll 时,我有两个 dll。一个是 Entropy.dll,另一个是 EntropyNative.dll。

如果我使用 Entropy.dll,我必须将 matlab 编译器运行时 (MCR) 安装到目标计算机,因为它需要 MWArray 类并且它仅适用于 MCR。但是我不想将 MCR 安装到目标计算机,所以我尝试使用 EntropyNative.dll,因为它Object取而代之MWArray作为参数。因此我不需要在每台计算机上安装 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 图窗窗口表现为模态对话框。在与此组件关联的所有图形窗口都关闭之前,该方法不会返回。

4

0 回答 0