在matlab的calllib中,错误“不支持函数返回类型”是什么意思?

时间:2011-01-05 22:47:19

标签: matlab dll struct shared-libraries loadlibrary

使用calllib从matlab访问外部DLL。 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.

令人惊讶的是,谷歌没有显示该错误消息的点击,并且calllib的文档中没有任何内容:http://www.mathworks.com/help/techdoc/ref/calllib.html

我的猜测是,由于函数返回一个结构,matlab正在呕吐。但文档中没有任何内容可以暗示这一点。虽然matlab没有提供任何示例,但它包含一个结构作为输出变量。

1 个答案:

答案 0 :(得分:1)

我怀疑和你一样,即MATLAB不喜欢struct返回类型。尝试返回一个简单类型,看看是否有效。然后我建议联系优秀的MATLAB支持人员。