외부 라이브러리를 사용하여 프로젝트를 진행하면 심심치 않게 볼 수 있는 에러가 바로 LNK 2019, LNK 2001 에러입니다.

이러한 에러는 코드에서 참조된 외부 심볼을 visual studio가 찾을 수 없는 경우에 발생하게 됩니다. DirectX를 사용할 때는 크게 두 가지의 원인이 있습니다.

Visual Studio에서 디렉토리 또는 라이브러리를 추가하지 않았거나, 플랫폼에 맞지 않게 설정

외부 라이브러리를 사용할 때에는 Visual Studio가 어디서 코드를 찾아봐야 하는지 명시적으로 알려줄 필요가 있습니다. 솔루션 탐색기 내의 프로젝트에서 오른쪽 클릭 -> 속성 또는 Alt + Enter를 눌러 속성창을 열어봅시다.

속성 -> 구성 속성 -> VC++ 디렉터리로 이동하면 VC++가 검색할 디렉토리를 지정할 수 있습니다. 여기서 DirectX가 설치된 디렉토리를 추가해줘야 합니다.

다음과 같이 오른쪽 끝 화살표를 누르면 편집을 할 수 있는데,

포함 디렉터리에는 DirectX의 include 폴더를,

라이브러리 디렉터리에는 자신이 빌드하려는 플랫폼에 맞게 DirectX의 Lib에 x86 또는 x64 폴더를 추가해주면 됩니다.

그러면 이제 VC++는 해당 디렉토리에서 파일을 찾을 수 있게 됩니다. 이제 링커에게 필요한 라이브러리 파일을 추가해 줍시다. 저의 경우 d3d9.libd3dx9.lib, winmm.lib내의 함수를 사용하고 있기 때문에 다음과 같이 종속성을 입력시켰습니다.

DirectX가 잘못 설치 됨

DirectX를 설치하면서 다음과 같은 에러를 만났다면, 관련 파일은 존재할 수 있지만 DirectX가 제대로 설치된 것이 아닙니다.

이 에러는 보통 DirectX가 설치하려는 VC++보다 높은 버전의 VC++이 설치되어 있을 때 충돌이 일어나기 때문에 발생합니다. 따라서 DirectX를 설치하기 전에 다음 두 프로그램을 제거하면 됩니다.

프로그램 추가/제거에서 프로그램 제거를 진행해도 되고, 혹은 cmd 명령어로 간단하게 제거할 수도 있습니다.

MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}

이후 DirectX를 다시 설치하면 정상적으로 설치가 되고, 링크 에러 또한 사라집니다.