0

そのため、デスクトップ複製 API を使用するアプリを開発していますが、IDXGIDeviceインターフェイスを使用してそのメソッドにアクセスしようとするとgetParent、次のエラーが発生します。

クラス "IDXGIDevice" にはメンバー "GetParent" がありません

このようにヘッダーファイルとスコープ解決演算子を使用する場合

DDAPI.h

#include <d3d11.h>
#include <dxgi1_2.h>

class DDAPI 
{
public:
    HRESULT InitDDA();
private:
    ID3D11Device* m_Device;
}

DDAPI.cpp

HRESULT DDAPI::InitDDA()
{
    IDXGIDevice* pDevice = nullptr;
    IDXGIAdapter* pAdapter = nullptr;

    m_Device->QueryInterface(__uuidof(IDXGIDevice), (void**)&pDevice);
    pDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&pAdapter); // Errors Here
}

(私はすでに ID3D11Device m_Device を初期化しています)

ただし 、このように DDAPI.cpp ファイル内にクラスを作成した場合、それは機能し、エラーは発生しません

class DDAPI
{
    ID3D11Device* m_Device;
    HRESULT InitDDA()
    {
        IDXGIDevice* pDevice = nullptr;
        IDXGIAdapter* pAdapter = nullptr;

        m_Device->QueryInterface(__uuidof(IDXGIDevice), (void**)&pDevice);
        pDevice->GetParent(__uuidof(IDXGIAdapter), (void**)&pAdapter);


    }
};

最初の例では、IntelliSense は他のすべてのメソッドを表示しませんIDXGIDevice(基本 IUnknown インターフェイス メソッドを含むだけです) が、2 番目の例では表示されます

ビルド エラーがないため、これは単なる IntelliSense エラーである可能性がありますが、エラーとして表示される場合は、別の方法でこれを実行できることを意味すると思います。

4

0 に答える 0