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)
.
you have to find the uuid or "guid" of the class. it should be in some header in the directx sdk (older) or in the Platform SDK (on Windows Vista and Windows 7) - depends on what you are using.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With