인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

케이초라's profile image
케이초라

asked

[MMORPG Game Development Series with C++ and Unreal] Part 2: Game Mathematics and DirectX12

Texture Mapping

[DirectXTex LNK2019 에러]

Written on

·

44

0

(참고)실습 환경: 윈도우 11 Pro 24H2 26100.3194

 

DirectXTex 라이브러리를 다운받아 DirectXTex_Desktop_2022 솔루션을 Debug, Release 모드로 각각 빌드하여 강의 영상과 동일하게 아래와 같은 디렉토리 구조로 파일을 배치하였습니다.

Library

  • Include

    • DirectXTex

      • DirectXTex.h

      • DirectXTex.inl

  • Lib

    • DirectXTex

      • DirectXTex.lib

      • DirectXTexD.lib

 

그리고 Engine 정적 라이브러리 프로젝트의 EnginePCH.h 파일에

#include <DirectXTex/DirectXTex.h>
#include <DirectXTex/DirectXTex.inl>

#pragma comment(lib, "d3d12")
#pragma comment(lib, "dxgi")
#pragma comment(lib, "dxguid")
#pragma comment(lib, "d3dcompiler")

#ifdef _DEBUG
#pragma comment(lib, "DirectXTex\\DirectXTexD.lib")
#else
#pragma comment(lib, "DirectXTex\\DirectXTex.lib")
#endif

위와 같이 추가하였고, 디렉터리 경로 또한 설정 완료된 상황입니다.

Engine 프로젝트에는

  • 모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\

Client 프로젝트에는

  • 모든 구성 x64 포함 디렉터리: $(SolutionDir)Library\Include\, $(SolutionDir)Engine\

  • 모든 구성 x64 라이브러리 디렉터리: $(SolutionDir)Library\Lib\, $(SolutionDir)Output\

 

이런 상황에서 Engine 정적 라이브러리를 빌드하면 통과하나, Client 프로젝트를 빌드하면 DirectXTex 의 두 함수 DirectX::CreateTexture, DirectX::PrepareUpload 에 대해 LNK2019 에러가 발생합니다.

 

경로 설정이나 lib 파일 설정 등등을 몇 번이나 확인했는데도 어디서 문제가 생기는 지 확인이 안되네요... 올려주신 강의 자료 프로젝트와 1:1로 비교해도 어디가 문제인지 발견이 안되는데, 어디를 점검해보면 될 까요...?

directx게임수학

Answer 2

0

케이초라님의 프로필 이미지
케이초라
Questioner

허허 올리자마자 해결했습니다.

윈도우 11을 사용하지만, DirectXTex 라이브러리 빌드할 때 2022_Win10 솔루션을 빌드한 버전으로 대체하니까 통과하네요.... ㅎ

0

안녕하세요, 인프런 AI 인턴입니다. 케이초라님.

DirectXTex 라이브러리에 관련된 LNK2019 에러는 보통 라이브러리 파일이 바르게 링크되지 않았거나 헤더 파일과 관련된 경로 설정에서 문제가 발생할 때 발생합니다. 먼저, 문제의 원인 및 가능한 해결 방법을 설명드리겠습니다.

주요 점검 사항

  1. 라이브러리 경로 확인:

    • 설정한 라이브러리 경로가 정확한지 다시 한번 확인하세요. 특히, DirectXTex.libDirectXTexD.lib가 있는 경로가 프로젝트 설정과 일치해야 합니다.
    • Client 프로젝트에서 “모든 구성 x64 라이브러리 디렉터리” 설정이 제대로 되어 있는지 재확인해 주세요. $(SolutionDir)Library\Lib\ 경로에 필수적인 라이브러리가 다 존재하는지 확인이 필요합니다.
  2. 라이브러리와 헤더 경로 일관성:

    • #pragma comment(lib, "경로")로 지정한 라이브러리 이름이 실제 파일과 일치하는지 다시 체크해봅니다. 특히, DebugRelease 모드 모두에서 정확히 설정되었는지 보시기 바랍니다.
    • DirectXTex의 두 함수 DirectX::CreateTexture, DirectX::PrepareUpload에 대해 선언된 헤더가 동일하고 각 소스 파일에서 접근 가능한지 확인해 주세요.
  3. 함수 정의 확인:

    • 비록 헤더 파일에 선언이 되어 있어도 해당 함수의 정의가 라이브러리에 컴파일되지 않은 경우가 있습니다. 이 경우 DirectXTex의 빌드 로그를 살펴보거나 Visual Studio에서 함수가 실제로 어디에 정의되어 있는지 디버깅하여 검토가 필요합니다.
  4. 클린 빌드 수행:

    • 이전 빌드로 인한 캐시 문제일 수 있으므로, 해결이 되지 않는다면 전체 솔루션을 “Clean”한 뒤 다시 “Rebuild” 해봅니다.

관련하여 이미 유사한 문제를 겪었던 다른 유저의 경우를 참고하시면 도움이 될 수 있습니다. DirectXTex 관련 질문드립니다!에서는 경로와 설정 문제에 대한 답변이 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

케이초라's profile image
케이초라

asked

Ask a question