2012-01-15 24 views
11

私はDirectXを使用しているCプロジェクトで作業しています。問題が発生しました。特定のDXコールでは、オブジェクトが必要です。通常、__uuidofで生成されます。これが必要なことの1つは、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

Cプログラマは通常、ソースファイルのどこかで定数として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)のヘッダーにある必要があります - 使用しているものによって異なります。