我使用MATLAB编译器生成了一个.NET Assembly
,只有很少的MATLAB代码:
function output_arg = extest( input_arg1,input_arg2 )
output_arg = input_arg1+input_arg2;
end
我用向导生成了dll。
在我的Visual Studio项目中,我添加了对生成的dll(extest.dll
(和MATLAB运行时dll(C:Program FilesMATLABMATLAB Runtimev92toolboxdotnetbuilderbinwin64v4.0MWArray.dll
(的引用,如"程序集描述"中所述。
这是我的 c# 代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MathWorks.MATLAB.NET.Utility;
using extest;
namespace DllTesting
{
class Program
{
static void Main(string[] args)
{
ExClass e1 = new ExClass();
}
}
}
它构建的智能没有错误,智能正在工作(因此根据我的理解,所有参考都应该很好(
但是当我启动它时,会抛出以下异常(在new ExClass()
(:
DllTesting 中发生了类型为"System.TypeInitializationException"的未处理异常.exe
其他信息:"extest"的类型初始值设定项。ExClass'抛出了一个例外。
任何建议此代码有什么问题或缺少什么?
尝试在类定义之前添加它
[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]
还要确保用于程序集的.NET
版本与用于 Visual Studio 项目的版本相同或更低。
另一种解决方案可能是将 MATLAB 运行时的路径(例如 C:\Program Files\MATLAB\MATLAB Runtime\v92\runtime\win64(添加到 PATH 环境变量中。
如果这些都不起作用,请查看此处和此处,您可能会遇到 64/32 位不匹配。