我在 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 图窗窗口表现为模态对话框。在与此组件关联的所有图形窗口都关闭之前,该方法不会返回。