반응형
링크할 때 가장 많이 접하는 에러가 바로 "unresolved external symbol...." 에러 메시지이다.
컴파일은 작성한 소스를 이용해서 링크를 하기 위한 중간단계의 오브젝트 파일을 생성하고, 이들 오브젝트 파일을 이용해서 링크과정을 거쳐 실행 파일을 만든다. 링크할 때 필요한 오브젝트 파일이 없으면 "unresolved...." 에러 메시지가 발생한다. 외부에서 제공하는 함수의 오브젝트 파일을 묶어서 제공하는 것을 라이브러리(Library)라고 한다.
다음 에러 메시지를 살펴보자
"unresolved external symbol ImmReleaseContext@8"
ImmReleaseContext 함수에 대한 오브젝트 코드가 없다는 메시지이다.
이 에러를 해결하는 방법은 ImmReleaseContext에 대한 오브젝트 코드를 포함하고 있는 라이브러리 파일을 포함시키면 된다.
ImmReleaseContext() 함수의 레퍼런스(함수 사용법을 설명한 문서)를 찾아보면
Import Library : Use imm32.lib
라고 나와 있다.
라이브러리 파일을 프로젝트에 포함시키기 위해서는 (VISUAL C++ 2005 기준)
프로젝트 이름에 오른쪽 클릭 -> 속성 -> 구성속성 -> 링커 -> 입력 -> 추가 종속성 -> imm32.lib 입력 -> 확인