2011-07-05 23 views
-1

誰でもこのエラーを手助けできますか? そして私はd3d1​​0.libとd3dx10.libにリンクしました。Visual C++ DirectXコンパイルエラー

私はDirectXにものに新しいですし、私はウェンディ・ジョーンズのDirectX 10 toturial

1> t1.obj次ました:エラーLNK2019:機能「BOOL CDECL InitDirect3D(構造体HWNDで参照32 @ _D3D10CreateDeviceAndSwapChain未解決の外部シンボルを*、int、int) "(?InitDirect3D @@ YA_NPAUHWND __ @@ HH @ Z) 1 C:\ Users \ Ehsan \ Documents \ Visual Studio 2010 \ Projects \ DirectX \ t1 \ Debug \ t1.exe:致命的なエラーLNK1120 :未解決の外1件

ソースコード:

// t1.cpp : Defines the entry point for the application. 
// 

#include "stdafx.h" 
#include "windows.h" 
#include "tchar.h" 
#include <d3d10.h> 
#include <d3dx10.h> 

// Global Variables: 
HINSTANCE hInst; // global handle to hold the application instance 
HWND wndHandle; // global variable to hold the window handle 
int width = 640; 
int height = 480; 

// Direct3D global vars 
ID3D10Device * pD3DDevice = NULL; 
IDXGISwapChain * pSwapChain = NULL; 
ID3D10RenderTargetView * pRenderTargetView = NULL; 

// Forward declarations of functions included in this code module: 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); 
bool InitWindow(HINSTANCE hInstance, int width, int height); 
void Render(); 
void ShutDownDirect3D(); 
bool InitDirect3D(HWND hWnd, int width, int height); 



int APIENTRY _tWinMain(HINSTANCE hInstance, 
    HINSTANCE hPrevInstance, 
    LPTSTR lpCmdLine, 
    int  nCmdShow) 
{ 


    // TODO: Place code here. 
    MSG msg = {0}; 
    // Perform application initialization: 
    if (!InitWindow(hInstance, width, height)) 
    { 
     return FALSE; 
    } 
    // called after creating the window 
    if(!InitDirect3D(wndHandle, width, height)) 
    { 
     return FALSE; 
    } 

    //hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_T1)); 

    // Main message loop: 
    while (WM_QUIT != msg.message) 
    { 
     while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE) 
     { 
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
     } 
     // Call the render function 
     Render(); 
    } 
    ShutDownDirect3D(); 
    return (int) msg.wParam; 

} 


bool InitWindow(HINSTANCE hInstance, int width, int height) 
{ 
    WNDCLASSEX wcex; 
    // Fill in the WNDCLASSEX structure. This describes how the window 
    // will look to the system 
    wcex.cbSize = sizeof(WNDCLASSEX); // the size of the structure 
    wcex.style = CS_HREDRAW | CS_VREDRAW; // the class style 
    wcex.lpfnWndProc = (WNDPROC)WndProc; // the window procedure callback 
    wcex.cbClsExtra = 0; // extra bytes to allocate for this class 
    wcex.cbWndExtra = 0; // extra bytes to allocate for this instance 
    wcex.hInstance = hInstance; // handle to the application instance 
    wcex.hIcon = 0; // icon to associate with the application 
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // the default cursor to use 
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); // the background color 
    wcex.lpszMenuName = NULL; // the resource name for the menu 
    wcex.lpszClassName = TEXT("DirectXExample"); // the class name being created 
    wcex.hIconSm = 0; // the handle to the small icon 
    RegisterClassEx(&wcex); 

    // Resize the window 
    RECT rect = { 0, 0, width, height }; 
    AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE); 
    // create the window from the class above 

    wndHandle = CreateWindow(TEXT("DirectXExample"), 
     TEXT("DirectXExample"), 
     WS_OVERLAPPEDWINDOW, 
     CW_USEDEFAULT, 
     CW_USEDEFAULT, 
     rect.right - rect.left, 
     rect.bottom - rect.top, 
     NULL, 
     NULL, 
     hInstance, 
     NULL); 
    if (!wndHandle) 
    { 
     return false; 
    } 
    // Display the window on the screen 
    ShowWindow(wndHandle, SW_SHOW); 
    UpdateWindow(wndHandle); 
    return true; 
} 

// 
// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) 
// 
// PURPOSE: Processes messages for the main window. 
// 
// WM_COMMAND - process the application menu 
// WM_PAINT - Paint the main window 
// WM_DESTROY - post a quit message and return 
// 
// 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    // Check any available messages from the queue 
    switch (message) 
    { 
     // Allow the user to press the Escape key to end the application 
    case WM_KEYDOWN: 
     switch(wParam) 
     { 
      // Check if the user hit the Escape key 
     case VK_ESCAPE: 
      PostQuitMessage(0); 
      break; 
     } 
     break; 
     // The user hit the close button, close the application 
    case WM_DESTROY: 
     PostQuitMessage(0); 
     break; 
    } 
    // Always return the message to the default window procedure for furtherprocessing 
    return DefWindowProc(hWnd, message, wParam, lParam); 
} 

/******************************************************************* 
* InitDirect3D 
* Initializes Direct3D 
* Inputs - Parent window handle - HWND, 
Window width - int 
Window height - int 
Updating the Code 31 
* Outputs - true if successful, false if failed - bool 
*******************************************************************/ 
bool InitDirect3D(HWND hWnd, int width, int height) 
{ 
    // Create the clear the DXGI_SWAP_CHAIN_DESC structure 
    DXGI_SWAP_CHAIN_DESC swapChainDesc; 
    ZeroMemory(&swapChainDesc, sizeof(swapChainDesc)); 

    // Fill in the needed values 
    swapChainDesc.BufferCount = 1; 
    swapChainDesc.BufferDesc.Width = width; 
    swapChainDesc.BufferDesc.Height = height; 
    swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; 
    swapChainDesc.BufferDesc.RefreshRate.Numerator = 60; 
    swapChainDesc.BufferDesc.RefreshRate.Denominator = 1; 
    swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; 
    swapChainDesc.OutputWindow = hWnd; 
    swapChainDesc.SampleDesc.Count = 1; 
    swapChainDesc.SampleDesc.Quality = 0; 
    swapChainDesc.Windowed = TRUE; 

    // Create the D3D device and the swap chain 
    HRESULT hr = D3D10CreateDeviceAndSwapChain(NULL, 
     D3D10_DRIVER_TYPE_REFERENCE, 
     NULL, 
     0, 
     D3D10_SDK_VERSION, 
     &swapChainDesc, 
     &pSwapChain, 
     &pD3DDevice); 

    // Error checking. Make sure the device was created 
    if (hr != S_OK) 
    { 
     return false; 
    } 

    // Get the back buffer from the swapchain 
    ID3D10Texture2D * pBackBuffer; 
    hr = pSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*) &pBackBuffer); 
    if (hr != S_OK) 
    { 
     return false; 
    } 

    // create the render target view 
    hr = pD3DDevice->CreateRenderTargetView(pBackBuffer, NULL, &pRenderTargetView); 

    // release the back buffer 
    pBackBuffer->Release(); 

    // Make sure the render target view was created successfully 
    if (hr != S_OK) 
    { 
     return false; 
    } 

    // set the render target 
    pD3DDevice->OMSetRenderTargets(1, &pRenderTargetView, NULL); 

    // create and set the viewport 
    D3D10_VIEWPORT viewport; 
    viewport.Width = width; 
    viewport.Height = height; 
    viewport.MinDepth = 0.0f; 
    viewport.MaxDepth = 1.0f; 
    viewport.TopLeftX = 0; 
    viewport.TopLeftY = 0; 

    pD3DDevice->RSSetViewports(1, &viewport); 

    return true; 
} 

/******************************************************************* 
* ShutdownDirect3D 
* Closes down and releases the resources for Direct3D 
34 Chapter 2 n Your First DirectX Program 
* Inputs - void 
* Outputs - void 
*******************************************************************/ 
void ShutDownDirect3D() 
{ 
    // release the rendertarget 
    if(pRenderTargetView) 
    { 
     pRenderTargetView->Release(); 
    } 

    // release the swapchain 
    if(pSwapChain) 
    { 
     pSwapChain->Release(); 
    } 

    // release the D3D Device 
    if(pD3DDevice) 
    { 
     pD3DDevice->Release(); 
    } 
} 

/******************************************************************* 
* Render 
* All drawing happens in the Render function 
* Inputs - void 
* Outputs - void 
*******************************************************************/ 
void Render() 
{ 
    if (pD3DDevice != NULL) 
    { 
     // clear the target buffer 
     pD3DDevice->ClearRenderTargetView(pRenderTargetView, D3DXCOLOR(0.0f, 0.0f, 0.0f, 0.0f)); 

     // All drawing will go here. 

     // display the next item in the swap chain 
     pSwapChain->Present(0, 0); 
    } 
} 

答えて

0

それはリンケージの問題だ、あなたはVisual Studioで右のライブラリを追加しましたか?

+0

すでに私のリンカーに追加しました – esihaj

0

は、リンカー依存のリストにD3D10.libを追加します。

+0

私は既にリンカーに追加しました – esihaj

+0

d3dx10d.libも追加しましたか? – lollancf37

+0

可d3dx10s.lib – esihaj

0

何あなたについては、ハードドライブ内のフォルダが含まれていますか?

あなたはあなたのインクルードを介してそれに行く必要があります。また、ライブラリの依存関係にlib/86も追加されています。

は、このリンクの手順に従ってください:http://www.rastertek.com/dx10tut01.html

これは、DirectXの設定プロセスを通してあなたを取るでしょう。最悪の事態が起きたときにそれをやっても、同じ問題が残っています。リンカーの問題ではないことが分かります。 4人が今あなたに言っている。

また、このサイトはDirectXにも適しています。私は非常に助言する。

関連する問題