我正在尝试在C#.Net
中开发Visual Studio 2017
控制台应用程序。
因此,我使用Matlab Library Compiler
在Matlab 2017
中编写了一些代码,然后为DLL
制作Visual Studio 2017
。
当我运行时没有错误,但我得到了这个例外:
Exception Unhandled :System.TypeInitializationException: 'The type initializer for 'Trial.CSharpClass' threw an exception.'
我在此地址使用MWArray.dll
作为参考:
F:\Program Files\MATLAB\R2017b\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll
以及Trial.dll
。
以下是我的Matlab
addNumbers.m
代码:
function output = addNumbers( num1 ,num2 )
output = num1+num2;
end
这是我的Test.cs
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using Trial;
namespace MatlabAndCSharpTrial
{
class Test
{
public static void addNumbers()
{
double num1 = 5;
double num2 = 9;
CSharpClass obj = new CSharpClass(); // Exception Unhandled is Here
MWArray output = obj.addNumbers((MWArray)num1, (MWArray)num2);
Console.WriteLine("Output ==> \n"+output);
Console.ReadKey();
}
}
}
和我的program.cs
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MatlabAndCSharpTrial
{
class Program
{
static void Main(string[] args)
{
Test.addNumbers();
}
}
}
所以我在Matlab 2010
和Visual Studio 2010
上使用了这个项目,并且成功,我在x64
中尝试x86
和Visual Studio 2017
问题仍然存在。
那我该怎么办?
修改 当我取代:
CSharpClass obj = new CSharpClass();
MWArray output = obj.addNumbers((MWArray)num1, (MWArray)num2);
使用:
MWArray output = CSharpClass.addNumbers((MWArray)num1, (MWArray)num2);
我收到此错误:
An object reference is required for the non-static field, method, or property 'CSharpClass.addNumbers(MWArray, MWArray)'