我通过包含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;
}
关于如何正确修复此代码的任何想法?
答案 0 :(得分: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返回一个double,但您将结果赋值给int。