mcc -W 'dotnet:myAssembly,myClass' -T link:lib Measure_SNR_w_SBX.m
在一个大会中露出这种方法:
public MWArray[] Measure_SNR_w_SBX(int numArgsOut, MWArray FullName, MWArray FigurePath)
{
return mcr.EvaluateFunction(numArgsOut, "Measure_SNR_w_SBX", FullName, FigurePath);
}
最终用法将是我无法使用Mwarray或其他MATLAB类型的应用程序,但我仅限于标准类型(双重,字符串),因此我定义了使用标准类型参数的包装器组件(.NET 4.8):
public void Measure_SNR_w_SBX(in string FullName, in string FigurePath, out double SNR, out double PhaseNoiseMean)
{
MWCharArray mwFullName = new MWCharArray(FullName);
MWCharArray mwFigurePath = new MWCharArray(FigurePath);
MWNumericArray output = obj.Measure_SNR_w_SBX(2, mwFullName, mwFigurePath);
SNR = output[0].ToScalarDouble();
PhaseNoiseMean = output[1].ToScalarDouble();
}
在包装纸上我实例化了matlab产生的组装槽以下:
using myAssembly;
using MathWorks.MATLAB.NET.Arrays;
[....]
obj = new myAssembly.myClass();
但是,当myclass不属于我所得到的时:
System.TypeInitializationException: 'The type initializer for 'myAssembly.myClass' threw an exception.'
依次收集三个内部例外:
TypeInitializationException: The type initializer of 'MathWorks.MATLAB.NET.Utility.MWMCR' threw an exception.
TypeInitializationException: The type initializer of 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception.
BadImageFormatException: Attempt to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
课程myassembly,mwarray和包装程序集被引用到应用程序中。 MATLAB运行时已安装,并且数组组件放置在此处:
C:\Program Files\MATLAB\MATLAB Runtime\v97\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll
此外,除了包装器组件和直接将mysassembly实例化到应用程序中,导致相同的结果。 如果我更改了呼叫命令,即:
MWCharArray fullName = new MWCharArray(txtDatFile.Text);
MWCharArray figure_path = new MWCharArray(txtFigureFile.Text);
var obj = new myAssembly.myClass();
output output = obj.Measure_SNR_w_SBX(2, fullName, figurePath);
double snr = output[0].ToScalarDouble();
double phase_noise = output[1].ToScalarDouble();
例外是在第一行上抛出的:
MWCharArray fullName = new MWCharArray(txtDatFile.Text);
I.E。:
System.TypeInitializationException: 'The type initializer of 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception.'
收集:
BadImageFormatException: Attempt to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
TypeInitializationException: The type initializer of 'MathWorks.MATLAB.NET.Utility.MWMCR' threw an exception.
我可以解决这个问题吗?
我发现了问题: