2011-08-05 5 views
0

내 C++ 코드에 유선 문제가 발생했습니다. 나는 명령 줄 인수를 받아 들일 TCLAP 소프트웨어를 사용하고 플래그 중 하나는 파일 이름입니다const char * 메서드에 전달 된 있지만 char const * 오류 대신

TCLAP::ValueArg<string> Poly ("p", "poly", "file name of the polynomial", false, "", "string"); 

나는 또한 3 개 개의 매개 변수를 받아 다른 기능을 가지고

void GetBiPoly(const char *filename, BiPoly<BigFloat> *u, BiPoly<BigFloat> *v); 

내가 전달 해요 이 방법으로 기능 GetBiPoly에 폴리 문자열 : 나는이 프로그램을 컴파일 할 때

benchmark::GetBiPoly(Poly.getValue().c_str(), &fxy, &gxy); 

, 그것은 나에게 다음과 같은 오류를 제공합니다 :

miranda.cpp:(.text+0x1900): undefined reference to `benchmark::GetBiPoly(char const*, CORE::BiPoly<CORE::BigFloat>*, CORE::BiPoly<CORE::BigFloat>*)' 

오류 정보의 파일 이름 유형이 char const*이고 정의가 const char* 인 것만 다릅니다. 아무도 내게 그게 어떤 문제인지 말해 줄 수 있니? 감사.

+0

두 가지 형식은 동일합니다. 문제는 구현에 연결하지 않았거나 다른 네임 스페이스에있는 것입니다. – pyroscope

답변

1

char const *const char *은 완전히 똑같습니다. 문제는 메시지의 해당 부분과 관련이 없습니다. 귀하의 오류는 당신이 함수 benchmark::GetBiPoly()을 호출하고 있지만 링커가 링크중인 객체에서 그것을 찾을 수 없다는 것입니다. 그 함수는 어디에 정의되어 있습니까? 그것을 연결하고 있습니까? 그 네임 스페이스에 있습니까?

+0

You r right 칼, 네임 스페이스를 망쳤습니다. 빠른 응답을 주셔서 감사합니다 :) 좋은 교훈을 얻었습니다. 그건 그렇고, char const *와 const char * 같은 것입니까? 죄송합니다. 저는 C++로 새로운 것 같습니다. –

+0

@da_zhuang : 예, 동일합니다. 둘 다'const'가 아닌 포인터입니다 (여러분이 원한다면 다른 변수의 주소를 저장할 수 있습니다).'const'로 간주되는'char'을 가리키고 있습니다 (이 포인터를 사용하여'char '그것은 가리킨다) –

관련 문제