d3dx11.lib not found?

18,068

Solution 1

When dealing with this myself, I started here:

Where is the DirectX SDK?

then - in about the middle of that page, reading about DirectXMath:

DirectXMath

It's pretty much just including the right header files and changing "D3DX" prefixes to "XM". Not quite that simple, but that's the general idea.

Your first program will probably have inclusions/usings like this:

#include <d3d11.h>
#include “DirectXMath.h”
#include “DirectXPackedVector.h”

using namespace DirectX; 
using namespace DirectX::PackedVector;

struct mystruct
{
   DirectX::XMFLOAT3 position;
   DirectX::PackedVector::HALF packedValue;
};

Of course, it's not considered best practice to have "using namespace", but in this one instance I found that "DirectX::" on every line of my program was making my program almost impossible (for me) to read - so I went with the "using".

Good luck!

Solution 2

Probably you included bad path in properties, Instead "*DirectxSDK/Lib/x86", you included ""*DirectxSDK/Lib".

Share:
18,068
bytecode77
Author by

bytecode77

„What I cannot create, I do not understand.“ - Richard Feynman bytecode77.com

Updated on June 04, 2022

Comments

  • bytecode77
    bytecode77 almost 2 years

    I'm using Windows 8 / Visual Studio 2012, C++11 and Direct3D 11 for development.

    I include the Direct3D libraries like this

    #pragma comment(lib, "dxgi.lib")
    #pragma comment(lib, "d3d11.lib")
    #pragma comment(lib, "d3dx11.lib") // <-- error LNK1104: cannot open file 'd3dx11.lib'
    #pragma comment(lib, "d3dx10.lib")
    

    However, the linker can't seem to find the d3dx11.lib. After adding the path where the library is located to the 'Library directories' of the project, the linker still can't find those files. Even after I copied the lib files into the project directory itself, it doesn't work.

    I installed the Windows 8 SDK as well as the DirectX SDK from June 2010. Am I missing anything?

  • bytecode77
    bytecode77 about 11 years
    It says DirectXMath is for Windows 8 or later. Is there something which can also be used for Windows Vsta/7?
  • bytecode77
    bytecode77 about 11 years
    Also, I haven't found any tutorials which doesn't use d3dx. Can you point me to one that doesn't use this depricated library?
  • Mark Stevens
    Mark Stevens about 11 years
    I've used it with Win7 with no troubles. The only tutorial I could find was MS's (code.msdn.microsoft.com/windowsdesktop/…) and that was good enough to get me going. If you really don't want to use XM, of course you should be able to link in D3DX11.lib and DX10 support, etc (as in your OP). But since you're just starting out, might as well be using current libraries.
  • bytecode77
    bytecode77 about 11 years
    This really looks like a nice place to start. Thanks!
  • Admin
    Admin about 11 years
    So DirectXMath replaces the need for d3dx10 and 11?
  • Mark Stevens
    Mark Stevens about 11 years
    Yes. It is 'optimized' for available HW so in theory it's 'better'. Porting a D3DX app to DirectXMath for me was mostly just changing names. For example, "D3DXMatrixLookAt" becomes "XMMatrixLookAt", D3DXMATRIX" becomes "XMMATRIX", etc. BUT there are some notable differences. For one, XMVECTOR doesn't overload the assignment operator, so instead of "XMVECTOR vec = XMVECTOR(1,2,3)", you need to call the "set" method: "XMVECTOR vec = XMVectorSet(1,2,3);"
  • Henry Bennett
    Henry Bennett over 9 years
    It only considered a bad practice to put a "using namespace" in a header file.
  • Prafulla Kumar Sahu
    Prafulla Kumar Sahu about 8 years
    it looks like a comment.