Что означает ошибка "Тип возвращаемого значения функции не поддерживается" в вызове matlab? - PullRequest
1 голос
/ 06 января 2011

Я использую 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, не включает структуру в качестве выходной переменной.

1 Ответ

1 голос
/ 06 января 2011

Я подозреваю, так же, как и вы, а именно, что MATLAB не любит тип возвращаемого значения struct Попробуйте вернуть простой тип и посмотрите, работает ли он. Тогда я предлагаю связаться с отличными людьми поддержки MATLAB.

...