在 MATLAB Compiler 生成的 c# 中初始化 dll 时出现异常

Exception when initialize dll in c# generated by MATLAB Compiler

我使用 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 Files\MATLAB\MATLAB Runtime\v92\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.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();
        }
    }
}

它构建时没有错误,intelisense 正在运行(所以根据我的理解,所有参考资料都应该是好的)

但是当我启动它时,抛出以下异常(new ExClass()):

An unhandled exception of type 'System.TypeInitializationException' occurred in DllTesting.exe

Additional information: The type initializer for 'extest.ExClass' threw an exception.

任何建议此代码有什么问题或缺少什么?

尝试在 class 定义之前添加这个

[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]

还要确保您用于汇编的 .NET 版本与用于您的 Visual Studio 项目的版本相同或更低。

另一种解决方案可能是将 MATLAB 运行时的路径(例如 C:\Program Files\MATLAB\MATLAB Runtime\v92\runtime\win64)添加到 PATH 环境变量中。

如果其中 none 有帮助,请查看 here and here,您可能有 64/32 位不匹配。