1

我通过包含 BLAS 库在我的代码中调用 BLAS 函数,而我的代码显然是有问题的,因为编译器会吐出错误:“ddot 未在此范围内声明。”

#include <stdio.h>
#include <stdlib.h>
#include <blas.h>

int main()
{
        double  m[10],n[10];
        int i;
        int result;

        printf("Enter the elements into first vector.\n");
        for(i=0;i<10;i++)
        scanf("%lf",&m[i]);

        printf("Enter the elements into second vector.\n");
        for(i=0;i<10;i++)
        scanf("%lf",&n[i]);

        result = ddot(m,n);
        printf("The result is %d\n",result);

        return 0;
}

关于如何正确修复此代码的任何想法?

4

1 回答 1

3

从 C 调用时,函数名必须是cblas_ddot()(C 调用约定)或ddot_(fortran 调用约定;注意结尾的下划线。)

您缺少一些函数参数。尝试

result = cblas_ddot(10, m, 1, n, 1);

或等效地

int len = 10, incm = 1, incn = 1;
// ...
result = ddot_(&len, m, &incm, n, &incn);

此外, ddot 返回一个双精度值,但您将结果分配给一个 int。

于 2013-01-23T13:44:59.893 回答