我正在尝试使用 .dll,在 MATLAB 中使用 Matlab .net Complier 构建,C# 类库,但是每次初始化 MWArray.dll 中的对象时程序都会引发异常,例如:
MWNumericArray m = new MWNumericArra(10,10);
例外:
System.TypeInitializationException was caught
HResult=-2146233036
Message=The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWNumericArray' threw an exception.
Source=MWArray
TypeName=MathWorks.MATLAB.NET.Arrays.MWNumericArray
StackTrace:
at MathWorks.MATLAB.NET.Arrays.MWNumericArray.op_Implicit(Double[] values)
at VolCalc.Vol.CalculateVolatility(Double[] data)
InnerException: System.TypeInitializationException
HResult=-2146233036
Message=The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWIndexArray' threw an exception.
Source=MWArray
TypeName=MathWorks.MATLAB.NET.Arrays.MWIndexArray
StackTrace:
at MathWorks.MATLAB.NET.Arrays.MWIndexArray..ctor()
at MathWorks.MATLAB.NET.Arrays.MWNumericArray..ctor(Double scalar)
at MathWorks.MATLAB.NET.Arrays.MWNumericArray.get__Inf()
at MathWorks.MATLAB.NET.Arrays.MWNumericArray..cctor()
InnerException: System.Security.SecurityException
HResult=-2146233078
Message=Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
Source=MWArray
StackTrace:
at MathWorks.MATLAB.NET.Utility.MWSafeHandle..ctor()
at MathWorks.MATLAB.NET.Arrays.MWArray..ctor()
at MathWorks.MATLAB.NET.Arrays.MWIndexArray..ctor()
at MathWorks.MATLAB.NET.Arrays.MWNumericArray..ctor(MWArrayComponent arrayComponent, Int32 rows, Int32 columns)
at MathWorks.MATLAB.NET.Arrays.MWIndexArray..cctor()
InnerException:
我尝试在控制台应用程序中执行此操作,并且工作正常,但我需要使用 matlab 中内置的 .dll 的 .dll。
有任何想法吗?
对我有帮助的是确保 C# 应用程序和 matlab 模块处于相同的架构下 - 即 32 位或 64 位。
如果您的 Matlab 是 64 位 - 尝试将 C# 项目更改为 64 位
参见这篇文章:在 Matlab 中创建共享库(.NET Assembly)并在 C# 中使用它 https://stackoverflow.com/questions/26910603/creating-a-shared-library-net-assembly-in-matlab-and-using-it-in-c-sharp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)