DXUT中缺少DXUTSetD3D11Device功能

时间:2014-02-09 12:21:57

标签: windows directx direct3d directx-11 dxut

我正在使用direct3d和DXUT编写基本程序。

我正在使用D3D11CreateDeviceAndSwapChain()手动创建direct3d设备,并使用DXUTSetD3D11Device()函数将其传递给DXUT,根据文档应该是正确的。

令我困惑的是,在调用LNK2019: unresolved external symbol时出现DXUTSetD3D11Device()错误。我可以调用其他DXUT函数,例如DXUTCreateWindow()就好了,我自己也建立了DXUT并且已经正确链接到它。

当我查看DXUT.h时,我可以找到DXUTSetD3D11Device()的声明,但是当我查看DXUT.cpp时,我找不到任何对此函数的引用,所以我想这可能就是我为什么的原因收到此链接器错误。

This似乎与我的问题相同。

我会在这里留下相关的代码片段,以防万一:

bool DXUTEngine::Initialise()
{
    HR(DXUTCreateWindow(m_appname));

    if(!m_pDirect3D->Initialise(DXUTGetHWND(), m_width, m_height))
    {
        OutputDebugString(L"\n\n Failed to initialise Direct3D\n\n");
        return false;
    }

    HR(DXUTSetD3D11Device(m_pDirect3D->GetDevice(), m_pDirect3D->GetSwapChain()));

    return true;
}

这是我创建设备的地方:

result = D3D11CreateDeviceAndSwapChain(NULL, driverType, NULL, 0, &featureLevel, 1,
D3D11_SDK_VERSION, &swapChainDesc, &m_pSwapChain, &m_pDevice, NULL, &m_pContext);

目前我要么认为我做错了,要么就是这个功能不存在。我真的很感激任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:1)

从你发布到MSDN论坛的链接,DXUT11框架是用源代码提供的,因此没有lib文件。所以错误与任何链接错误无关。

另一个重要的事情是:函数DXUTSetD3D11Device 在DXUT框架中没有实现。如果你想使用它,你应该自己实现它。