5월, 2017의 게시물 표시

[SDL2] IMG_Load로 png 파일 로드시 문자열에 잘못된 문자가 있습니다

이미지
회사 프로젝트를 SDL2를 사용해 포팅작업을 4월 10일부터 시작했으니 한달이 조금 지났습니다. 순조롭게 진행중이었는데 다른 일정으로 잠시 보류 되었다가 다시 진행하려고 보니 SDL2_image lib에서 png 파일을 읽어오지 못하는 이슈가 발생했습니다.

SDL_Surface* surface = IMG_Load(strImage.c_str());
const char* error = IMG_GetError();
+strImage"intro.png"
+error0x6c839080  <문자열에 잘못된 문자가 있습니다.>const char *

IMG_GetError()로 체크해보니 위와 같이 '문자열에 잘못된 문자가 있습니다' 라고는 하지만 근 한달동안 별 문제 없다가 수정도 되지 않은 코드에서 발생한 에러라 조금 당황스럽더군요.

저만 진행중인 일정이라 혹시나 해서 빌드한 바이너리를 팀원에게 전달 후 테스트해보니 잘 됩니다. 저만 안되더라는... 그래서 최근에 윈도우10 크리에이터 업데이트를 설치했었는데 이것과 호환성에 문제가 있나 싶어 이전 버전으로 복구를 해봤지만 이슈는 해결되지 않았습니다. 브런치로 작업중인데 trunk에서 머지해온게 뭔가 잘 못되서 메모리를 건드나? 이런 쪽으로도 접근해 봤지만 아니었습니다.

그러던 중 비주얼 스튜디오 출력창에 아래와 같은 것을 발견했습니다.

libpng16-16.dll'을(를) 로드했습니다. libpng16-16.dll'을(를) 언로드했습니다.

이상하게 libpng16-16.dll이 로드된 후 바로 언로드를 하더군요.

확인해보니 libpng16-16.dll이 내부적으로 zlib1.dll과 의존성이 있었습니다.

SDL2_image를 압축해제하면 나오는 파일들인데 여기서 libpng16-16.dll, SDL2_image.dll만 쭉 사용하면서 포팅을 잘 해왔던 부분인데 한달이 지난 시점에 갑짜기 dll이 없다고 이슈를 터트려주다니? 황당하네요. 다른 dll은 파일이 없으면…