LNK1104 Error

I'm getting the LNK1104 error for the d3dx11.lib file. It's driving me nuts that I can't get it to go away. I've tried resetting the link. Maybe I'm just missing something but I don't know what.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// include the basic windows header files and the Direct3D header files
#include <windows.h>
#include <windowsx.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <dxerr.h>

// include the Direct3D Library file
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "dxerr.lib")

// global declarations
IDXGISwapChain *swapchain;             // the pointer to the swap chain interface
ID3D11Device *dev;                     // the pointer to our Direct3D device interface
ID3D11DeviceContext *devcon;           // the pointer to our Direct3D device context

LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );

int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmdLine, int cmdShow )
{
	UNREFERENCED_PARAMETER( prevInstance );
    UNREFERENCED_PARAMETER( cmdLine );

    WNDCLASSEX wndClass = { 0 };
    wndClass.cbSize = sizeof( WNDCLASSEX ) ;
    wndClass.style = CS_HREDRAW | CS_VREDRAW;
    wndClass.lpfnWndProc = WndProc;
    wndClass.hInstance = hInstance;
    wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
    wndClass.hbrBackground = ( HBRUSH )( COLOR_WINDOW + 1 );
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = L"Color";

    if( !RegisterClassEx( &wndClass ) )
        return -1;

    RECT rc = { 10, 30, 800, 640 };
    AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE );

    HWND hwnd = CreateWindowA( "Color", "Background_Color!",
        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left,
        rc.bottom - rc.top, NULL, NULL, hInstance, NULL );

    if( !hwnd )
        return -1;

    ShowWindow( hwnd, cmdShow );
}

// function prototypes
void InitD3D(HWND hWnd);     // sets up and initializes Direct3D
void CleanD3D(void);         // closes Direct3D and releases memory

// the WindowProc function prototype
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

// this function initializes and prepares Direct3D for use
void InitD3D(HWND hWnd)
{
	//create a struct to hold information about the swap chain
	DXGI_SWAP_CHAIN_DESC scd;

	//clear out the struct for use
	ZeroMemory(&scd, sizeof(DXGI_SWAP_CHAIN_DESC));

	//fill the swap chain description struct
	scd.BufferCount = 1;                                   //one back buffer
	scd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;    //use 32-bit color
	scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;     //how the swap chain is to be used
	scd.OutputWindow = hWnd;                               //the window to be used
	scd.SampleDesc.Count = 4;                              //how many multisamples
	scd.Windowed = TRUE;                                   //windowed/full screem mode

	//create a device, device context and swap chain using the information in scd struct
	D3D11CreateDeviceAndSwapChain(NULL,
		                          D3D_DRIVER_TYPE_HARDWARE,
								  NULL,
								  NULL,
								  NULL,
								  NULL,
								  D3D11_SDK_VERSION,
								  &scd,
								  &swapchain,
								  &dev,
								  NULL,
								  &devcon);

}


HRESULT D3D11CreateDeviceAndSwapChain(
	IDXGIAdapter *pAdapter,
	D3D_DRIVER_TYPE DriverType,
	HMODULE Software,
	UINT Flags,
	D3D_FEATURE_LEVEL *pFeatureLevels,
	UINT SDKVersion,
	DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
	IDXGISwapChain **ppSwapChain,
	ID3D11Device **ppDevice,
	D3D_FEATURE_LEVEL *pFeatureLevel,
	ID3D11DeviceContext **ppDeviceContext);


// this is the function that cleans up Direct 3D and COM
void CleanD3D()
{
	//close and release all existing COM objects
	swapchain->Release();
	dev->Release();
	devcon->Release();
}


Last edited on
It helps if you post the actual error message. Most people don't have error codes memorized.

I googled LNK1104 and it looks like it's a file not found error... so the first thing to check is that you actually have the DirectX SDK installed on your computer (note: just having DirectX isn't enough, you need the developer's SDK. It's on MS's site).
It is a file not found error:

Error 1 error LNK1104: cannot open file 'd3dx11.lib'

The problem I'm having is getting rid of it. I made sure it was installed and it is (believe me when I say it took forever to get it installed due to some odd conflict, so I know it's there).
Googling around revealed D3dx11 does not exist or should not be used.
Use DXMath.
I'm using d3dx11 for school. It has worked before in the past. If I knew how to upload screens to here I would post my includes in the settings for the project.
In the include section under vc++ directories heading:

$(DXSDK_DIR)Include
$(DXSDK_DIR)Lib\x86
Topic archived. No new replies allowed.