프로젝트 솔루션 2개를 생성(Normal, Workspace)한 후, 양 쪽 솔루션에서 동일한 ImGui Context를 참조하려면 아래처럼 imgui.h에 존재하는 IMGUI_API의 매크로를 변경해주어야 합니다.
예를 들어, 제 프로젝트는 Normal Solution에서 Imgui를 초기화하고 Frame을 실행하면서 Workspace에서는 각각의 버튼을 생성하고 렌더링하는 동작을 정의했습니다. 즉, 두 솔루션 모두 같은 스레드에서 ImGui를 동작시키고 있는데, 이는 Workspace가 Normal 솔루션을 동적 링크해서 사용되어야함을 의미합니다.
Workspace에서 ImGui header를 include해서 함수를 사용하면 외부 참조 에러가 나오게 되는데, 이에 대해 ImGui를 직접 링크해서 사용하게 되면, DLL과 exe가 별도의 ImGui Context를 사용하게 되므로, 직접 링크보다는 __declspec(dllexport)를 통해 해당 함수를 Import해줄 필요가 있습니다.
원래는 mport를 직접 명시해주어야 하지만, 함수의 경우는 특별히 명시해주지 않아도 잘 동작한다고 합니다.
관련 내용은 링크를 참조 -> ( https://3dmpengines.tistory.com/591 )
ImGui 라이브러리에서 의도한 듯, IMGUI_API 매크로를 각각 붙여주고 있는 것을 볼 수 있습니다.
'디버깅' 카테고리의 다른 글
std_image 라이브러리에서 뒤집힘 문제 해결 (0) | 2023.10.16 |
---|---|
CRT 설정에 종속적이지 않은 정적 라이브러리 생성 방법 (0) | 2023.08.08 |
glew 정적 링킹할 때 심볼 에러 해결 (0) | 2023.08.07 |
[VS2022] C28251: 'WinMain'에 대한 주석이 일치하지 않습니다. 이 인스턴스에는 주석 없음이(가) 있습니다. (0) | 2022.10.11 |
[VS2022] C6386: 'var'에 쓰는 동안 버퍼 오버런이 발생했습니다. (0) | 2022.09.08 |