我正在使用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);
目前我要么认为我做错了,要么就是这个功能不存在。我真的很感激任何帮助。
提前致谢。
答案 0 :(得分:1)
从你发布到MSDN论坛的链接,DXUT11框架是用源代码提供的,因此没有lib文件。所以错误与任何链接错误无关。
另一个重要的事情是:函数DXUTSetD3D11Device 在DXUT框架中没有实现。如果你想使用它,你应该自己实现它。