2014-02-09 13 views
1

저는 direct3d와 DXUT을 사용하여 기본 프로그램을 작성하고 있습니다.DXUTSetD3D11Device 함수가 DXUT에서 누락되었습니다.

나는 수동으로 D3D11CreateDeviceAndSwapChain()으로 direct3d 장치를 만들고 설명서에 따라 DXUTSetD3D11Device() 기능을 사용하여 DXUT로 전달하고 있습니다.

내게 혼란스러운 점은 DXUTSetD3D11Device()을 호출 할 때 LNK2019: unresolved external symbol 오류가 발생한다는 것입니다. DXUTCreateWindow()과 같은 다른 DXUT 함수를 호출 할 수 있습니다. 또한 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 파일이 없습니다. 그래서 오류는 링크 오류에 관한 것이 아닙니다.

또 다른 중요한 점은 function DXUTSetD3D11Device 에 DXUT 프레임 워크에 구현이 없음이 없음을 의미합니다. 그것을 사용하고 싶다면 직접 구현해야합니다.

+0

먼저 내가 lib 파일에 실제로 코드를 작성 했으므로 링크 오류가있을 수 있다고 생각했습니다. 어쨌든 대답을 주셔서 감사합니다. 나는 겉보기에 중요한 기능이 구현되지 않는다는 것이 이상하다고 생각했습니다. – orangeocelot

+0

또한 구현이없는 함수에 대한 참조를 소스에 제공 할 수 있다면 좋을 것입니다. 왜 그들이 그렇게 할 지 확신하지 못합니다. 또한이 함수가하는 일을 오해하고있는 것일까 요? – orangeocelot

+1

이 문제는 DXUT11의 [CodePlex] (https://dxut.codeplex.com/discussions/531081)에있는 스레드에서 다룹니다. –