在MATLAB编译器生成的c#中初始化dll时出现异常
我使用MATLAB编译器生成了一个在MATLAB编译器生成的c#中初始化dll时出现异常,c#,matlab,dll,matlab-compiler,C#,Matlab,Dll,Matlab Compiler,我使用MATLAB编译器生成了一个.NET程序集,只需很少的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\
.NET程序集
,只需很少的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\MWARRY.dll
)的引用,如“程序集描述”中所述
这是我的c#代码:
它构建时没有错误,IntelliSense正在运行(因此根据我的理解,所有引用都应该是好的)
但是当我启动它时,会抛出以下异常(在new exportss()
)上):
DllTesting.exe中发生类型为“System.TypeInitializationException”的未处理异常
其他信息:“extest.exportss”的类型初始值设定项引发异常
任何建议此代码有什么问题或缺少什么?请尝试在类定义之前添加此代码
[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]
还要确保用于汇编的.NET
版本与用于Visual Studio项目的版本相同或更低
另一种解决方案可能是将MATLAB运行时的路径(例如C:\Program Files\MATLAB\MATLAB runtime\v92\runtime\win64)添加到path环境变量中
如果这些都没有帮助,请看一看,您可能有64/32位不匹配。hmm如果添加上述行,则会出现以下编译器错误:
错误CS1730程序集和模块属性必须位于文件中定义的所有其他元素之前,但使用子句和外部别名声明除外。
。它被设置为64位。我刚刚设置了。没有编译器错误了。但这个问题仍然存在/嗯。你可能需要在Matlab上尝试不同的编译器选项。。除了我已经提出的建议之外,我不知道还有什么可以推荐的。无论如何,谢谢。我现在设法运行了它。我再次编译了几次代码,并将.net framework改为4.0而不是4.6.2(因为这是我的默认版本)。据我所知,matlab文档应该可以在4.0及以上版本上运行。。。它不是。所以我不能百分之百确定这是因为重新编译还是仅仅因为魔术:D
[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]