查看单个帖子
旧 2019-12-14, 20:38   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab的calllib中的错误“不支持函数返回类型”是什么意思?

我正在使用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没有提供任何示例,但都包含结构作为输出变量。



回答:

我怀疑与您相同,即MATLAB不喜欢struct返回类型。尝试返回一个简单的类型,看看是否可行。然后,我建议与出色的MATLAB支持人员联系。



更多&回答...
poster 当前离线   回复时引用此帖