2012-02-05 2 views
0

:링커 오류가 나는 다음과 같은 링커 오류가 무엇입니까

IdeOne.com code post

:

Error 1 error LNK2001: unresolved external symbol "private: static class std::map,class std::allocator >,struct SDL_Surface *,struct std::less,class std::allocator > >,class std::allocator,class std::allocator > const ,struct SDL_Surface *> > > CSurface::loadedSurfaces" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected][email protected][email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@A) CSurface.obj

CSurface 컴파일 단위의 헤더와 CPP 파일의 코드에있다 이 링커 오류가 발생하는 원인은 무엇입니까? (나를 미치게 만듭니다.)

+0

다음과 같은 링크는 게시하지 마십시오. http://meta.stackexchange.com/questions/94807/auto-ban-questions-that-use-pastebin –

답변

2

loadedSurfaces을 선언했지만 아직 정의하지 않았습니다. 실제로 변수를 선언 할 단 하나의 번역 단위에 다음을 추가 : 그것은 지금처럼

map<string, SDL_Surface*> CSurface::loadedSurfaces; 

loadedSurfaces를 클래스 정의 안에 것은 함수의 프로토 타입과 같다. 이 함수를 사용하려고하면 링커는 앞으로 선언을 보게되므로 찾아서 찾지 만 실제 정의는 어디에서도 찾을 수 없습니다. 이름을 loadedSurfaces으로 사용할 때 실제 번역 단위가 말하는 모든 실제 변수가 무엇인지 알고 있기 때문에 정의를 제공해야하며 링커는 만족할 것입니다.

+0

감사합니다. 세스 :) 당신이 처음이었던 것처럼 이것을 답으로 표시하겠습니다. –

2

CSurface::loadedSurfaces은 선언되었지만 정의되지 않았습니다. .cpp 파일에 다음을 추가하십시오.

map<string, SDL_Surface*> CSurface::loadedSurfaces; 
관련 문제