2014-02-09 2 views
1

Я пишу базовую программу, используя direct3d и DXUT.Функция DXUTSetD3D11Device отсутствует в DXUT

Я создаю устройство direct3d вручную с помощью D3D11CreateDeviceAndSwapChain() и передавая его в DXUT с помощью функции DXUTSetD3D11Device(), которая в соответствии с документацией должна быть правильной.

Что меня смущает, так это то, что я вызываю ошибку 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

Из ссылки, которую вы отправляете на форум MSDN, структура DXUT11 была доставлена ​​в исходный код, поэтому нет файлов lib. поэтому ошибка не была связана с ошибками ссылок.

Другое важное: функция DXUTSetD3D11Device не имеет реализации в структуре DXUT. если вы хотите использовать его, вы должны реализовать его самостоятельно.

+0

Прежде всего, я сам создал код в файлах lib, поэтому я подумал, что может быть ошибка ссылки. Спасибо за ответ в любом случае, я просто подумал, что странно, что казалось бы важная функция не будет реализована. – orangeocelot

+0

Также было бы здорово, если бы вы могли дать источник нашей ссылки для функции, не имеющей реализации. Я просто не знаю, почему они это сделают. Возможно, я не понимаю, что делает эта функция? – orangeocelot

+1

Примечание. Эта проблема покрыта потоком на [CodePlex] (https://dxut.codeplex.com/discussions/531081) для DXUT11. –

Смежные вопросы