Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB编译器生成的c#中初始化dll时出现异常_C#_Matlab_Dll_Matlab Compiler - Fatal编程技术网

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

在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\

我使用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\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")]