본문 바로가기
컴퓨터/디버깅

no matching function for call to

by adnoctum 2010. 5. 24.


다음과 같은 에러가 났다.

환경: GCC 4.1.2 20080704 (Red Hat 4.1.2-46) on CentOS 5.4

NR_stat.cpp: In function ‘void ttest(const std::vector<double, std::allocator<double> >&, const std::vector<double, std::allocator<double> >&, double&, double&)’:
NR_stat.cpp:516: error: no matching function for call to ‘Beta::betai(double, double, double)’
NR_stat.cpp:240: note: candidates are: bool Beta::betai(double, double, double, double*)

에러의 내용을 살펴 보면, NR_stat.cpp 파일에 있는 함수 void ttest(~~) 함수 안의, NR_stat.cpp 파일의 516번째 줄에서 함수

Beta::betai(double,double,double)

을 호출하고 있는데, 이 함수가 없다는 것이다. 위의 경우 unresolved external symbol 과 같은 에러가 나지 않는 이유는 컴파일만 했기 때문인데, 즉,

g++ -c NR_stat.cpp

와 같은 명령어로 작업을 했기 때문이다. 어찌되었든 Beta::betai 함수 중 double 형 parameter 3개를 받는 함수를 호출했는데 그와 같은 형태의 함수가 없다는 것이다. gcc 의 경우 아마도 이런 함수를 호출하려고 했던 것 아니냐, 하는 의미에서

NR_stat.cpp:240: note: candidates are: bool Beta::betai(double, double, double, double*)

과 같은 함수가 있다고 알려 주고 있다. VC++ 의 경우 이와 같은 말이 나오지는 않는 것 같다.

따라서 위와 같은 경우, 함수 호출 부분을 수정하거나, 함수 호출 부분은 그대로 두고 대신 호출된 함수와 prototype 이 같은 함수를 만들어야 할 것이다.




'컴퓨터 > 디버깅' 카테고리의 다른 글

invalid operands of types  (0) 2010.06.12
디버깅 공지사항  (0) 2010.05.25
for 문의 동작 순서  (1) 2010.05.19
DC를 제대로 해제하지 않아서 생기는 문제  (0) 2010.05.19
too few arguments to function  (0) 2010.05.18