matlab から外部 DLL にアクセスするために calllib を使用しています。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 が提供する例はどれも、出力変数として構造体を含みません。