2013-01-23 2 views
1

BLAS 라이브러리를 포함하여 코드에서 BLAS 함수를 호출하고 컴파일러에서 오류가 발생하여 코드에 결함이있는 것 같습니다. "ddot가이 범위에 선언되지 않았습니다. "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

당신의 가정과는 달리'ddot'는''에 선언되어 있지 않은 것으로 보입니다. 헤더에서 찾았습니까? –

+0

그러나 blas 라이브러리에는 inbuilt 함수가 있습니다. – Teja

+0

헤더에서'ddot'를 검색하고 찾은 것을 다시보고하십시오. –

답변

3

C에서 호출, 함수 이름은 cblas_ddot() (C 호출 규약) 또는 ddot_ 여야합니다

당신은 어떤 함수 인수가 누락되었습니다.

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

또는 동등

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

또한, DDOT 더블을 반환하지만 당신이 int와 결과를 할당하는보십시오.