1

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 が提供する例はどれも、出力変数として構造体を含みません。

4

1 に答える 1

1

私はあなたと同じことを疑っています。つまり、MATLAB は構造体の戻り値の型を好まないということです。単純な型を返してみて、それが機能するかどうかを確認してください。次に、優れた MATLAB サポート担当者に連絡することをお勧めします。

于 2011-01-06T00:19:30.733 に答える