2010-07-15 2 views
4

나는 전역 변수 세트와 메소드를 cpp 파일에 가지고 있습니다.'extern'문제 해결 키워드

int a; 

int b; 

int c; 

void DoStuff() 
{ 

} 

헤더 파일에 명시 적으로 extern 키워드로 선언했습니다. 내 문제는 헤더 파일을 다른 C++ 파일에 포함 시키면 외부 변수와 메서드를 사용할 수 없다는 것입니다. 그것은 링커 오류 오류 LNK2001 : 해결되지 않은 외부 기호에 대한 방법과 변수를 말하는거야. 나는 무엇을 여기에서 잘못 했느냐?

PS : DoStuff() 메서드는 변수를 채 웁니다. 모든 헤더 파일과 cpp 파일은 같은 프로젝트 폴더에 있습니다.

감사합니다!

답변

2

시도해보십시오.

변수를 선언하는 것보다는 헤더에 변수를 정의하십시오.

extern int x;

그냥 선언 (안 정의)

간단한 예를

a.cpp

int a,b,c; //definition 

void doStuff(){ 

} 

b.cpp

extern int a,b,c; //extern keyword is mandatory 
void doStuff(); //extern keyword is optional because functions by default have external linkage 

int main() 
{ 

    doStuff(); 
} 
1

extern 변수와 컴파일 세트의 헤더에 선언 된 함수를 정의하는 .cpp 파일을 포함해야합니다. 정의가 들어있는 .cpp 파일이 컴파일되지 않고 헤더 파일의 선언을 사용하는 파일과 링크되는 경우 링커 오류가 발생합니다.

0

당신이 객체에 연결하고 확실하다 해당하는 파일 메소드와 변수가 들어있는 소스 파일에?

+0

예, 확인했습니다. – Izza

0

(태그에 따라) Visual C++를 사용하고 있으므로 컴파일 할 때 모든 파일이 동일한 프로젝트에 있는지 확인해야합니다. 파일을 작성하는 것이 아니라 프로젝트를 빌드하고 있는지 확인하십시오.

이 경우에는 의심 스럽지만 소스 파일이 C 또는 C++로 컴파일되었는지 확인하거나 이름 지정 스키마에 문제가있을 수 있습니다.