How to fix NET C# System.Typ​eInitializ​ationExcep​tion using a DLL built by Matlab on 64bit Windows 8?

5 次查看(过去 30 天)
I'm not able to create an application on my Computer that references a .NET Assembly built using Matlab Builder NE. I'm on Windows 8 64bit, have a 64bit Matlab 2013a and I'm using Visual Studio 2012.
I followed the instructions in the Video for the makeSqr example: http://www.mathworks.de/videos/using-matlab-builder-ne-68758.html
It all works fine except I', missing the Mathworks .NET MWArray API in the GAC list of assemblies. I manually add a reference to D:\Program Files\MATLAB\MATLAB Compiler Runtime\v81\toolbox\dotnetbuilder\bin\win64\v2.0\MWArray.dll
The program compiles fine, but Initializing my class obj = new MLTest();
i get the following exception: System.TypeInitializationException wurde nicht behandelt. HResult=-2146233036 Message=Der Typeninitialisierer für "com.demo.MLTest" hat eine Ausnahme verursacht. Source=demo TypeName=com.demo.MLTest StackTrace: bei com.demo.MLTest..ctor() bei BuilderNEMainApp.Program.Main(String[] args) in c:\Users\Irgenfs\Documents\Visual Studio 2012\Projects\BuilderNEMainApp\BuilderNEMainApp\Program.cs:Zeile 33. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() bei System.Threading.ThreadHelper.ThreadStart_Context(Object state) bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart() InnerException: System.TypeInitializationException HResult=-2146233036 Message=Der Typeninitialisierer für "MathWorks.MATLAB.NET.Utility.MWMCR" hat eine Ausnahme verursacht. Source=demo TypeName=MathWorks.MATLAB.NET.Utility.MWMCR StackTrace: bei com.demo.MLTest..cctor() InnerException: System.TypeInitializationException HResult=-2146233036 Message=Der Typeninitialisierer für "MathWorks.MATLAB.NET.Arrays.MWArray" hat eine Ausnahme verursacht. Source=MWArray TypeName=MathWorks.MATLAB.NET.Arrays.MWArray StackTrace: bei MathWorks.MATLAB.NET.Utility.MWMCR..cctor() InnerException: System.BadImageFormatException HResult=-2147024885 Message=Es wurde versucht, eine Datei mit einem falschen Format zu laden. (Ausnahme von HRESULT: 0x8007000B) Source=MWArray StackTrace: bei MathWorks.MATLAB.NET.Arrays.MWArray.mclmcrInitialize2(Int32 primaryMode) bei MathWorks.MATLAB.NET.Arrays.MWArray..cctor() InnerException:
Any ideas how to fix this?

回答(1 个)

Friedrich
Friedrich 2013-11-22
Hi,
sounds like a bittedness issues. Is your VS 2012 Project configured as x64 project? If not, please do so and recompile.
  2 个评论
Stephan
Stephan 2013-11-22
Yes, target is configured to be x64 only. Tried by uninstalling Matlab and did a clean install of 2013b. The error still happens.
Friedrich
Friedrich 2013-11-25
"Es wurde versucht, eine Datei mit einem falschen Format zu laden. "
Indicates some bittedness issue. Can you run a compiled exe (compiled with MATLAB compiler directly) on that machine? If yes, can you try setting up a C/C++ project and incoorperate a DLL compiled with MATLAB COmpiler (see the matrixdriver example in the doc) and see if that works.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Deploy to .NET Applications Using MWArray API 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by