2012-01-15 1 views
11

저는 DirectX를 사용하는 C 프로젝트로 작업 중이며 문제가 있습니다. 특정 DX 호출에는 일반적으로 __uuidof으로 생성 된 IID 개체가 필요합니다. 이것이 필요한 것은 RenderTargetView를 만드는 것입니다. 내 C 코드에서 __uuidof를 호출 할 때, 내가 컴파일러 오류가C에서 __uuidof의 대안

ID3D11Texture2D* pBackBuffer = NULL; 
hr = g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer); 

: DirectX를 샘플/튜토리얼이 작업을 수행 Error 19 error C4233: nonstandard extension used : '__uuidof' keyword only supported in C++, not C. DirectX에는 C 인터페이스가 있으므로이 작업을 수행 할 수있는 방법이 있어야한다고 생각합니다.하지만 어떻게 될지 전혀 알 수 없습니다. 누구 알아?

+0

일반적으로 프로그래머는 UUID를 소스 파일의 어딘가에있는 상수로 정의합니다. –

답변

13

__uuidof은 설명 된 오류처럼 C++에서만 사용할 수 있습니다. DX 헤더 파일에서 사용할 수있는 C 용 인터페이스의 GUID에 대한 정의가 이미 있다고 생각합니다. d3d11.h에서

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/1306b57f-4b75-4f0c-b4f3-9bcc1e3a0dd6

:

EXTERN_C const IID IID_ID3D11Texture2D; 

사용이 대신 __uuidof(ID3D11Texture2D).

+2

그래, 그랬어. 유일한 다른 변화는'dxguid.lib'와 연결하는 것이 었습니다. 감사. – Kyle

2

uuid 또는 클래스의 "guid"를 찾아야합니다. DirectX SDK (구형) 또는 Platform SDK (Windows Vista 및 Windows 7)의 일부 헤더에 있어야합니다 - 사용중인 제품에 따라 다릅니다.