1

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

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

让我感到困惑的是,我LNK2019: unresolved external symbol在调用DXUTSetD3D11Device(). 我可以调用其他 DXUT 函数,例如DXUTCreateWindow()就好了,我也自己构建了 DXUT 并正确链接到它。

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

似乎和我的问题一样。

我将在此处留下相关的代码,以防万一:

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);

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

提前致谢。

4

1 回答 1

1

从您发布的指向 MSDN 论坛的链接中,DXUT11 框架是在源代码中交付的,因此没有 lib 文件。所以该错误与任何链接错误无关。

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

于 2014-02-10T02:58:39.650 回答