【问题标题】:DXUTSetD3D11Device function missing from DXUTDXUTSetD3D11 DXUT 中缺少设备功能
【发布时间】:2014-02-09 12:21:56
【问题描述】:

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

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

让我感到困惑的是,我在调用DXUTSetD3D11Device() 时收到LNK2019: unresolved external symbol 错误。我可以调用其他 DXUT 函数,例如 DXUTCreateWindow()

当我查看 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);

目前我要么认为我做错了什么,要么认为这个功能不存在。非常感谢任何帮助。

提前致谢。

【问题讨论】:

    标签: windows directx direct3d directx-11 dxut


    【解决方案1】:

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

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

    【讨论】:

    • 首先,我自己将代码构建到了 lib 文件中,这就是为什么我认为可能存在链接错误的原因。无论如何感谢您的回答,我只是觉得一个看似重要的功能没有实现很奇怪。
    • 另外,如果您能提供我们对没有实现的函数的参考,那就太好了。我只是不确定他们为什么会那样做。另外,也许我误解了这个函数的作用?
    • 请注意,此问题已在 DXUT11 的 CodePlex 上的一个线程中得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2018-09-17
    • 2022-01-21
    • 2021-06-15
    相关资源
    最近更新 更多