저는 DirectX 11을 기반으로 프로젝트를 만들고 있습니다. 이전에는 v110 도구 세트를 사용하여 Visual Studio 2012로 개발했습니다. 그런 다음 C++ 11 표준을 사용할 필요가 있으므로 Visual Studio 2015로 이동하기로했습니다. 또한 Windows 7을 사용하고 있고 프로젝트가이 플랫폼과 호환되도록 (표준 Win 프로젝트를 사용합니다. 범용 플랫폼 용).DirectX 11과 Visual Studio 2015 도구 세트 v140 (Windows 7)
그리고 새로운 VS 도구 모음 v140에 문제가 있습니다. DirectX 11 2010 June SDK를 사용하여 다음 컴파일 오류가 발생했습니다.
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1271): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1271): error C2143: syntax error: missing ',' before '*'
1>C:\Program Files (x86)\Windows Kits\8.1\Include\shared\dxgi1_2.h(1275): error C2061: syntax error: identifier 'DXGI_RGBA'
저는 effects11과 D3DX도 사용하고 있습니다. 그래서 새로운 툴셋으로 effects11을 재 컴파일해야했습니다. D3DX 라이브러리는 어떨까요? 사용하기를 권장하지 않습니다. 정확히이 라이브러리가 컴파일 오류를 일으키는 것 같습니다.
또한 새로운 명확한 프로젝트 (제 경우에는 8.1 키트 사용)의 Windows 키트에서 DirectX 11의 사용법을 직접 확인했습니다. 그것은 D3DX 라이브러리없이 잘 작동합니다.
호환성 문제가 발생하지 않도록 D3DX 라이브러리와 Win Kits를 동시에 사용할 수 있습니까? 또는 DXTK와 같은 D3DX 대신 라이브러리를 사용해야합니까?
나는 윈도우 키트 \ 8.1 \ + DirectXMath + DirectXTex (마이크로 소프트의 망할 놈의 라이브러리) 그것을 내 프로젝트 및 D3DX11Tex에서 D3DX를 제외하고 완벽하게 적응하기 위해 노력했습니다
UPD. 다음 오류가 6 번 발생했습니다 :
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xtree(2047): error C3848: expression having type 'const `anonymous-namespace'::StringCompare' would lose some const-volatile qualifiers in order to call 'bool `anonymous-namespace'::StringCompare::operator()(PCHAR,PCHAR)'
포함 된 디렉토리는 프로젝트 pathes에 자동으로 포함됩니다. 그리고 내가 이해하는 한, 괜찮습니다.
이 오류가 발생 할말을 테잎 코드는 다음과 같습니다
bool _Compare(const key_type& _Left, const key_type& _Right) const
{ // compare key_type to key_type, with debug checks
return (_DEBUG_LT_PRED(this->_Getcomp(), _Left, _Right));
}
그리고 모든 6 오류가 xtree.h에서 그 코드를 가리 킵니다. 그런데 많은 헤더에 d3d11.h이 여러 번 포함되어 있습니다 (따라서 d3d11.h은 단일 포함과 같이 계층 구조 맨 위에 있지는 않지만 계층 구조의 모든 파일에는 이 헤더).
질의 :이 파일은 어디에 사용됩니까 (직접 포함하지 않습니까?)? 링크 문제의 왕이 될 수 있을까요? 또는 일부 버전간에 다시 충돌이 발생합니다 (2010 년 6 월 Dx11 SDK를 사용하지 않아서 D3DX11Tex과 같은 기존 헤더를 연결하지 않으려 고 함).
SOLUTION : xtree.h는 STD위한 자기 한정 펑이었다의 문제점 : 비정 연산자지도(). 따라서이를 일정한 것으로 변경하면 6 개의 오류가 모두 해결됩니다.
DirectX 질문은 어땠습니까? 불행히도 새로운 VS을 사용하여 이전 버전을 사용하는 방법은 없습니다. 그래서 답변과 코멘트에서 언급했듯이 D3DX를 전혀 사용하지 마십시오. 모두에게 감사드립니다!
[MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspx), [DirectX SDK (2015 Edition)는 어디에 있습니까?] (https : //blogs.msdn.microsoft.com/chuckw/2015/08/05/where-is-the-directx-sdk-2015-edition/) 및 [D3DX없이 살기] (https : //blogs.msdn. microsoft.com/chuckw/2013/08/20/living-without-d3dx/). –
이 플래그가 닫힌 이유는 무엇입니까? 그것은 매우 합리적인 질문입니다. – Robinson
Win 키트의 새로운 SDK와 함께 이전 DirectX 11 SDK (2010 년 6 월)를 사용하는 것과 같은 방법입니다. 당신이 필요로하는 모든 것은 "오래된 코드"를 라이브러리에서 새로운 것으로 바꾸는 것입니다. 마지막으로해야 할 일은 새로운 라이브러리가 어떤 함수를 사용해야하는지 (예 : CreateFile2 (Win8 이상) 또는 CreateFile (Win7 호환 가능))를 결정하기 위해 ** ** ** ** _WIN32_WINNT 버전을 강제로 사용하는 것입니다. 내가 이것을 솔루션에 넣어야하는지 확신 할 수 없으며 DirectX SDK와 어떻게 든 연결되어 있다고 생각했던 xtree로 내 자신의 문제를 제거해야합니까 –