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



我使用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 位不匹配。

相关内容

最新更新