Я хочу получить доступ к свойствам пользовательского класса MATLAB в MAT-файле в автономном приложении C ++.Пользовательский класс - это класс, созданный в MATLAB с чем-то вроде этого:
classdef customClass
properties
myProp
end
methods
function obj = customClass(arg1,arg2)
obj.myProp = arg1 + arg2
end
end
end
Экземпляр этого класса теперь сохраняется в файле MAT и должен быть доступен для отдельного приложения на языке C.
Очевидно, MATLAB предлагает библиотеку для чтения MAT-файлов в приложениях на Си.Это нормально работает для «обычных» типов, и API, кажется, предлагает функцию mxGetProperty
для доступа к пользовательским объектам.Однако, если я попытаюсь выполнить минимальный пример с использованием этой функции, произойдет сбой с пустым утверждением в management.cpp:671
.Минимальный пример:
#include <iostream>
#include "mat.h"
int main()
{
MATFile* file = matOpen("test.mat", "r");
if (file == nullptr)
std::cout << "unable to open .mat" << std::endl;
mxArray* customClass = matGetVariable(file, "c");
if (customClass == nullptr)
std::cout << "unable to open tcm" << std::endl;
mxArray* prop = mxGetProperty(customClass, 0, "myProp");
if (prop == nullptr)
std::cout << "unable to access myProp";
}
При более внимательном рассмотрении документации выявляется ограничение: mxGetProperty
не поддерживается для автономных приложений, таких как приложения, созданные с помощью API механизма MATLAB.
Есть ли другая возможность доступа к customClass
в MAT-файле из автономного приложения C ++?