제목이 짱 긴데.

 

정확히는

 

"Visual Studio 2017 이후 버전에서 MFCDirectX 9동시에 사용하려고 할 시" 발생하는 문제와, 해결법에 대한 내용입니다.

 

아니 요즘 세상에 아무리 그래도 DX9을 쓴다구요? 할 수도 있는데...

 

네 씁니다. 써요... 네...

 

 

* 해당 문제는 Visual Studio 2017 이후부터 발생합니다. 

 

 

일단, MFC를 사용하지 않고 그냥 DX9를 프로젝트에 임포트 했을때는 정상 작동하는것을 상정하고 이야기를 합니다.

 

MFC 프로젝트를 생성하고, pch.h나 framework.h에 d3d9.h, d3dx9.h를 인클루드 해주고 프로젝트를 빌드 돌리면,

 

정신이 아득해진다...

아마 이런 현상을 목격할 가능성이 큽니다.

 

이 문제는, (정확하진 않으나) 추측상, Windows 10 SDK에 기본 탑재되어있는 DX 10~12 버전과, 임의로 설치한 DX 9 버전간의 충돌로 인해 발생하는 문제로 보입니다.

 

뜬금없이 뭔 충돌이냐? 하겠습니다만... Visual Studio 최신버전, 특히 2019 (v142 MFC)를 사용하는 경우에는 기본 세팅이 Win 10 SDK 기반인지라... 아니 이게 충돌이 왜 나지? 싶은데 충돌이 나더라구요.

 

해결법은 의외로 간단했습니다.

 

* 해당 방식으로 해결이 되지 않는 경우, VS2015를 설치하신 뒤에 해당 버전에 동봉되는 SDK 8.1을 사용하시면 됩니다.

 

1. developer.microsoft.com/ko-kr/windows/downloads/sdk-archive/

 

Windows SDK 아카이브 - Windows 앱 개발

이 비보안 업데이트에는 품질 향상이 포함됩니다. MRMSupport.dll 로드 실패로 인해 개발자가 Windows 7에서 UWP 앱을 빌드하지 못하는 문제를 해결했습니다. MidlRT 및 MDMerge가 Windows 7에서 실행되지 않는

developer.microsoft.com

해당 링크에서 Win SDK 8.1 버전을 다운로드 합니다.

 

2. 설치합니다.

 

3. 원하는 프로젝트에서, 프로젝트 > 속성 > 일반 > Windows SDK 버전을 10.0 에서 8.1로 변경합니다.

 

 

 

이 부분을..
이렇게 바꾸면 됩니다.

 

 

 

SDK 버전을 낮추게 되면, 구문오류는 더이상 발생하지 않고 빌드가 성공하게 됩니다.

 

 

이랬던것이
"아무튼 실행됨" 상태로 바뀝니다.

하지만, 온갖 매크로 재정의 경고문구가 발생하는것으로 봐서는... 이 조차 문제가 발생할 여지가 있어 보입니다.

 

이는 문제 발생시 그때 대응하기로 했습니다... 일단은 경고문구에 나와있다시피 Win 8.1 SDK와 DX9 SDK 간의 충돌이니까요.

+ Recent posts