글 작성 이유
렌더러 코드 정리하다가 include를 수정했는데 갑자기 에러가 마구잡이로 터지면서 실행할 수가 없었다.
처음에는 뭘 잘못 건드렸는지 모르고 있다가 에러메세지에서 stb_image에 문제가 있다고 해서 찾아서 고치는데 성공.
일반적으로 렌더링에서 텍스처를 사용하기 위해 이미지 파일을 읽어와서 텍스처로 저장하는데
이때 stb_image.h를 사용하면 간단하게 이미지를 읽어올 수 있다.
사용방법은 다음과 같이 코드를 작성하면 된다.
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
stb_image.h 파일을 살펴보면 다음과 같이 적혀있는데 보면,

구현을 생성하기 위해서는 이 파일을 포함하기 전에 단 하나의 c나 cpp 파일에만 전처리기를 지시하라고 명시되어 있다.
문제
만약 #define이 포함된 include를 헤더파일에 같이 명시할 경우

아래처럼 LNK2005 에러 리스트를 맞이하게 된다.
그럼 만약 전처리기를 제거하고 헤더 파일만 include 하면 괜찮지 않을까?

stb_image.h에 명시된 내용을 꼭 따르기로 한다.
다시 익숙한 LNK2019 에러를 보게 된다.

+여러 파일에서 stb_image 기능을 쓰고싶으면?
https://stackoverflow.com/questions/43348798/double-inclusion-and-headers-only-library-stbi-image
Double inclusion and headers only library stbi_image
I have a main.cpp including a.h (that has its own a.cpp) a.h includes the header only library "stbi_image.h" as such: #ifndef STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION #include "
stackoverflow.com

없는게 없는 스택오버 플로우의 답변이다.
이런식으로 설계하면 다른 파일에서도 이미지를 불러오는 기능을 호출할 수 있다.