我正在使用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支持人员联系。
更多&回答...