Creating MATLAB data structures in C# library to use in MATLAB

10 vues (au cours des 30 derniers jours)
Constantin
Constantin le 14 Oct 2021
Commenté : Constantin le 20 Oct 2021
I am trying to interface a C# library to MATLAB. Using standard properties and methods works fine, however the performance is slow. I figured I'd try to use MWArray.dll to create MATLAB data structures directly in C# with an interface DLL which will be called by MATLAB.
However, whenever I call a method that uses MWArray, I get a type initializer error:
The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception.
My C# class looks like this:
using MathWorks.MATLAB.NET.Arrays;
namespace Dummy.MatlabInterop
{
public class Example
{
public MWStructArray getStruct()
{
return new MWStructArray(new int[] { 1, 1 }, new string[] { "Dummy" });
}
}
}
This is called by MATLAB like this:
NET.addAssembly(fullfile(pwd, 'Dummy.MatlabInterop.dll'));
ex = Dummy.MatlabInterop.Example();
s = ex.getStruct(); % <- This throws 'The type initializer for 'MathWorks.MATLAB.NET.Arrays.MWArray' threw an exception.'
The dll is created for 64bit. I cannot find much documentation on this. Is this approach valid? What am I doing wrong? Any advice would be much appreciated.

Réponse acceptée

Kojiro Saito
Kojiro Saito le 20 Oct 2021
MathWorks.MATLAB.NET.Arrays is a part of MATLAB Compiler SDK and is different from MATLAB's external interface for .NET.
As NET.addAssembly document says, "NET.addAssembly does not support assemblies generated by the MATLAB Compiler SDK™ product.", so we cannot call the .NET libraries which use MathWorks.MATLAB.NET.Arrays.
  1 commentaire
Constantin
Constantin le 20 Oct 2021
Thank you for the reply. I will use a different approach.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Deploy to .NET Applications Using MWArray API dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by