调用“mmul”没有匹配的函数
Posted
技术标签:
【中文标题】调用“mmul”没有匹配的函数【英文标题】:No matching function for call to 'mmul' 【发布时间】:2015-07-22 10:53:33 【问题描述】:我正在尝试使用 vDSP_mmul 函数将两个矩阵相乘,但我收到错误消息“No matching function for call to 'mmul'”。
导入完成为:
#import <Accelerate/Accelerate.h>
函数调用:
vDSP_mmul(colorArray, 1, rgbArray, 1, concatArray, 1, 4, 4, 4);
colorArray , rgbArray 是两个矩阵, concatArray 是结果矩阵。
【问题讨论】:
你右键显示vDSP_mmul
的声明了吗?
你的论点正确吗? IIRC,该错误消息通常意味着它无法解决重载,即错误的类型或参数数量。
你的 sn-p 为我编译;您可以包含更多上下文(包括矩阵的声明)和失败的完整编译命令吗?如果您只使用 4x4 矩阵,您可能会发现使用<simd/simd.h>
中定义的矩阵类型和运算更容易,并且您还将获得更好的性能。
【参考方案1】:
vDSP_mmul 只有 8 个参数,而你正在使用 9 个参数,所以编译器找不到你正在使用的函数。您可能想删除最后一个“4”:
vDSP_mmul(colorArray, 1, rgbArray, 1, concatArray, 1, 4, 4);
【讨论】:
您链接到的文档不正确。vDSP_mmul
接受 9 个参数。
我们可以通过这种方式正确使用Array vDSP_mmul(&colorArray[0][0], 1, &rgbArray[0][0], 1, concatArray, 1, 4, 4,4) ;以上是关于调用“mmul”没有匹配的函数的主要内容,如果未能解决你的问题,请参考以下文章