오늘 겪은 문제
오늘 유튜버 The Cherno의 Hazel Engine강의 영상을 따라하던 중 문제가 발생했습니다.
평상시에 코드를 쓰던 환경에서 실행 시 잘 작동하는 것을 확인하고 push한 repo를 클론해왔는데 새로운 환경에서는 실행이 되지 않았습니다.
CallStack을 확인해보면 문제가 생긴부분은 git submodule로 가져온 imGui부분이었는데
GetTexDataAsRGBA32함수의 경우
TexPixelsRGBA32가 null(false)인 경우 데이터를 생성하도록 되어있는데 왜 이런 문제가 발생한걸까요..
문제 발생시 스크린샷을 찍지 못해서 다른 스크린샷을 가져왔는데 그림과 같이 해당 부분이 unable to read memory로 나타나는 바람에
위 코드의 if문에서 memory access violation오류가 발생하는 상황이었습니다.
그러나 이 함수에 대해서 오류가 생기는 부분은 검색을 통해서 찾아보았지만 비슷한 문제도 없었습니다.
이것은 제 환경에서 문제가 있다는 것을 의미하는 것이었는데 알아채는데 시간이 걸렸습니다.
처음에는 감도 못잡고 있다가 가져온 imgui 패키지의 examples 폴더에서 같은 코드를 가진 예제를 실행했는데
문제가 생기지 않고 잘 실행되는 것을 확인할 수 있었습니다.
위와같이 Fonts 항목의 값들이 null이든 0이든 뭐든 입력되어야 정상입니다.
해당 예제에서 ImGui 초기화와 관련하여 코드를 한줄 한줄 비교하던 중 IMGUI_CHECKVERSION을 프로젝트에서는 사용하지 않았다는 것을 알게됩니다.(유튜브 강의 영상에서도 사용하지 않음)
그래서 버전 체크를 시도했더니
ImGui의 버전이 Mismatched 되었다는 결과를 받게 되었습니다.
여기서 감을 잡아서 imgui.h파일의 위치를 조사해보니
examples 프로젝트는 submodule폴더에서 include를 하고 있었고
게임 엔진 프로젝트는 vcpkg폴더에서 include를 하고 있다는 것을 확인했습니다.
그리고 두 imgui 패키지의 버전은 당연하게도 달랐습니다.
이전에 작업한 환경에서도 똑같이 vcpkg가 설치되어 있었는데 왜 이렇게 헤더파일이 충돌하게 된 것인지는 모르겠으나
vcpkg에 설치된 imgui를 업데이트 해서 버전을 맞추는 걸로 일단 문제를 해결해보기로 합니다.
vcpkg 패키지 버전 업데이트 하기
vcpkg에 설치된 패키지를 업데이트 하는 기준으로 설명합니다.
cmd 창을 열고
cd vcpkg
vcpkg update
다음과 같은 명령어를 입력하면 아래의 메세지를 받게 됩니다.
Using local portfile versions. To update the local portfiles, use `git pull`.
No packages need updating.
메세지를 따라 git pull을 입력하면
git pull
vcpkg에서 버전이 업데이트 된 패키지들에 대한 정보를 받아오게 됩니다. 이후 다시
vcpkg update
를 입력하면 그림과 같이 버전이 업데이트된 패키지들이 표시됩니다.
이후 해당 명령어를 입력하면 목록에 표시된 패키지 전체에 대해서 버전 업그레이드를 실시합니다.
vcpkg upgrade --no-dry-run
또는 다음과 같이 특정 패키지를 골라서 업그레이드 할 수도 있습니다.
vcpkg upgrade <패키지명> <패키지명>
이후 프로그램이 정상적으로 실행되는 것을 확인할 수 있었습니다.
추가
https://learn.microsoft.com/ko-kr/vcpkg/users/manifests
매니페스트 모드
vcpkg가 있는 매니페스트를 사용하여 프로젝트별로 라이브러리를 구성합니다.
learn.microsoft.com
이런 문제에 대해 vcpkg에서는 manifest 모드를 사용하여 프로젝트 별 라이브러리 구성을 권장하고 있다고 합니다.
vcpkg를 그냥 사용하고 있었는데 이번 문제를 계기로 vcpkg 사용법에 대해서 추가로 공부가 필요할 것 같습니다.
'잡동사니' 카테고리의 다른 글
warning LNK4098 해결하기 (2) | 2023.10.04 |
---|---|
warning C4819 해결하기 (2) | 2023.10.03 |
Visual Studio 디버그 모드에서만 콘솔창이 바로 닫히는 경우 (0) | 2023.09.11 |
vcpkg Imgui Docking 설치 (0) | 2023.09.06 |
그래픽스 사이트 메모 (0) | 2023.05.16 |