Why do invalid cast exceptions occur when executing MATLAB R2022b functions from Visual Basic .NET applications?

8 visualizaciones (últimos 30 días)
I am using the .NET class "MATLABEngine" to call MATLAB functions as methods from a Visual Basic .NET console app, as described in the documentation below:
I'm able to get the expected output shown in the Visual Basic .NET example for the "StartMATLAB" method, which starts a new MATLAB process with default options.
However, when I add the following lines of code that call the "magic" MATLAB function to the Visual Basic .NET example code:
Dim xIn As Double = 5.0
Dim results(,) As Double
results = matlab.magic(xIn)
I receive an invalid cast exception as shown below:
Unhandled exception. System.InvalidCastException: Unable to cast object of type 'MathWorks.MATLAB.Types.FevalTaskResult' to type 'System.Double[,]'.
   at <NAME OF CONSOLE APP>.Program.Main() in <PATH TO PROGRAM FILE CONTAINING EXAMPLE CODE>:<LINE 3 FROM EXAMPLE CODE>
I would like to resolve this error to get a better understanding of building Visual Basic .NET console apps that leverage MATLAB functions.

Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 7 de Mzo. de 2023
In Visual Basic .NET, you have to use the "CTypeDynamic" method to convert variables of dynamic type (e.g. the return of "matlab.magic()") to a known type (e.g. Double(,)). For more information regarding the "CTypeDynamic" method, take a look at Microsoft's documentation linked below:
For example, modify the line:
results = matlab.magic(xIn)
To:
results = CTypeDynamic(matlab.magic(xIn), GetType(Double(,)))
As of R2022b, this is necessary for writing Visual Basic .NET code due to dynamic typing, and unfortunately there is no way to make the code less verbose at this time. A code example is attached with the file "Program.vb".

Más respuestas (0)

Categorías

Más información sobre Call MATLAB from .NET en Help Center y File Exchange.

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by