I'm working with a C project that's using DirectX and I've run into a problem. Certain DX calls require a IID
object, typically generated with __uuidof
. One thing this is required for is creating a RenderTargetView. The DirectX samples/tutorials do this:
ID3D11Texture2D* pBackBuffer = NULL;
hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer );
When I try to call __uuidof
in my C code, I get an compiler error: Error 19 error C4233: nonstandard extension used : '__uuidof' keyword only supported in C++, not C
. DirectX has a C interface, so I imagine there must be a way to do this, but I have no idea what it would be. Anyone know?
__uuidof
is only available in C++, as error described. I think you already have definitions of the GUIDs of the interfaces for C available in DX header files.
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/1306b57f-4b75-4f0c-b4f3-9bcc1e3a0dd6
From d3d11.h
:
EXTERN_C const IID IID_ID3D11Texture2D;
Use this instead of __uuidof(ID3D11Texture2D)
.