错误是什么;不支持函数返回类型";用matlab表示的平均值';是calllib吗?

错误是什么;不支持函数返回类型";用matlab表示的平均值';是calllib吗?,matlab,dll,struct,shared-libraries,loadlibrary,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

我使用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的文档中也没有任何内容:


我的猜测是,由于函数返回一个结构,matlab正在呕吐。但文件中没有任何内容表明这一点。尽管matlab提供的示例中没有一个包含结构作为输出变量。

我怀疑与您相同,即matlab不喜欢结构返回类型。尝试返回一个简单的类型,看看是否有效。然后我建议联系优秀的MATLAB支持人员。

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

由Mathworks确认。Matlab不喜欢struct返回类型。只支持int/double/float样式的返回类型。@很高兴听到这个消息。我自己使用calllib将MATLAB链接到我开发的DLL,我会特别注意不要从DLL返回任何花哨的东西!从Mathworks确认。Matlab不喜欢struct返回类型。只支持int/double/float样式的返回类型。@很高兴听到这个消息。我自己使用calllib将MATLAB链接到我开发的DLL,我会特别注意不要从DLL返回任何花哨的东西!