调用“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 矩阵,您可能会发现使用&lt;simd/simd.h&gt; 中定义的矩阵类型和运算更容易,并且您还将获得更好的性能。 【参考方案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”没有匹配的函数的主要内容,如果未能解决你的问题,请参考以下文章

错误:没有匹配的调用函数

C++'没有匹配的调用函数'和'没有已知的参数转换'

没有匹配的成员函数调用“擦除”

没有调用 'WidgetBridge::WidgetBridge()' 的匹配函数

构造函数中的“没有匹配的函数调用”

C++ [错误] 没有匹配的调用函数