프로젝트 솔루션 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해줄 필요가 있습니다. 

 

 

 

IMGUI_API를 적절히 수정한 코드


원래는 mport를 직접 명시해주어야 하지만,  함수의 경우는 특별히 명시해주지 않아도 잘 동작한다고 합니다.
관련 내용은 링크를 참조 -> ( https://3dmpengines.tistory.com/591 )

 

ImGui.h에서 선언되어있는 인터페이스들 목록


ImGui 라이브러리에서 의도한 듯, IMGUI_API 매크로를 각각 붙여주고 있는 것을 볼 수 있습니다.