Я использую Calllib для доступа к внешней DLL из Matlab. В DLL есть функция с подписью, которая выглядит следующим образом:
typedef struct resultStruct {
double E;
double W;
double N;
double S;
double Z;
double Y;
} RESULT_STRUCT;
typedef struct inputStruct {
double A;
double B;
double C;
} INPUT_STRUCT;
RESULT_STRUCT calc(
const INPUT_STRUCT* input);
Когда я пытаюсь вызвать это в Matlab,
loadlibrary('calc.dll','calc.h');
input.A = 1;
input.B = 2;
input.C = 3;
[res, st] = calllib('calc','calc',input);
Я получаю ошибку:
??? Error using ==> calllib
The function return type is not supported.
Удивительно, но в Google нет сообщений об этом сообщении об ошибке, и в документации по calllib ничего нет: http://www.mathworks.com/help/techdoc/ref/calllib.html
Полагаю, поскольку функция возвращает структуру, matlab рвется. Но нет ничего в документации, чтобы предположить это. Хотя ни один из примеров, которые предоставляет Matlab, не включает структуру в качестве выходной переменной.