본문 바로가기
개발언어/C++

[ERROR] unresolved external symbol _ImmReleaseContext@8

by 엔돌슨 2010. 5. 3.
반응형

링크할 때 가장 많이 접하는 에러가 바로 "unresolved external symbol...." 에러 메시지이다.

 

컴파일은 작성한 소스를 이용해서 링크를 하기 위한 중간단계의 오브젝트 파일을 생성하고, 이들 오브젝트 파일을 이용해서 링크과정을 거쳐 실행 파일을 만든다. 링크할 때 필요한 오브젝트 파일이 없으면 "unresolved...." 에러 메시지가 발생한다. 외부에서 제공하는 함수의 오브젝트 파일을 묶어서 제공하는 것을 라이브러리(Library)라고 한다.

 

다음 에러 메시지를 살펴보자

"unresolved external symbol ImmReleaseContext@8"

ImmReleaseContext 함수에 대한 오브젝트 코드가 없다는 메시지이다.

 

이 에러를 해결하는 방법은 ImmReleaseContext에 대한 오브젝트 코드를 포함하고 있는 라이브러리 파일을 포함시키면 된다.

 

ImmReleaseContext() 함수의 레퍼런스(함수 사용법을 설명한 문서)를 찾아보면

 

Import Library : Use imm32.lib

 

라고 나와 있다.

 

라이브러리 파일을 프로젝트에 포함시키기 위해서는 (VISUAL C++ 2005 기준)

 

프로젝트 이름에 오른쪽 클릭 -> 속성 -> 구성속성 -> 링커 -> 입력 -> 추가 종속성 -> imm32.lib 입력 -> 확인