2013-03-29 2 views
7

J'utilise Windows 8/Visual Studio 2012, C++ 11 et Direct3D 11 pour le développement.d3dx11.lib pas trouvé?

I comprennent les bibliothèques Direct3D comme celui-ci

#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") 

Cependant, l'éditeur de liens ne peut pas sembler trouver le d3dx11.lib. Après avoir ajouté le chemin d'accès de la bibliothèque aux «répertoires de bibliothèque» du projet, l'éditeur de liens ne trouve toujours pas ces fichiers. Même après avoir copié les fichiers lib dans le répertoire du projet, cela ne fonctionne pas.

J'ai installé le SDK Windows 8 ainsi que le SDK DirectX à partir de juin 2010. Ai-je raté quelque chose?

+0

Etes-vous sûr que le fichier "D3DX11" lib est inclus avec ceux que vous copiez? Je suppose que vous pouvez le lier, mais la bibliothèque de l'utilitaire D3DX n'est plus supportée - en fait, vous n'avez pas besoin de télécharger le SDK 2010 du tout. D3DX a été remplacé par la bibliothèque DirectXMath (XMMath). La conversion est un peu pénible, mais pas trop mauvaise. –

+0

Ok. Je ne le savais pas. Je suis assez nouveau pour D3D11. Je vais voir comment le faire sans cette lib. – bytecode77

+0

Parfois, D3DX est le chemin à parcourir (je n'utilise pas DirectXMath car cela complique l'interopérabilité avec CUDA). En outre, certaines interfaces pour DirectXMath sont médiocres pour le portage (par exemple l'initialisation). Avez-vous trouvé une solution? (Une façon de coller avec Windows SDK et d'accéder proprement à D3DX?) – axon

Répondre

8

Lorsque vous traitez avec ce moi-même, j'ai commencé ici:

Where is the DirectX SDK?

puis - à peu près au milieu de la page, la lecture sur DirectXMath:

DirectXMath

Il est à peu près juste y compris les fichiers d'en-tête et en changeant les préfixes "D3DX" en "XM". Pas tout à fait aussi simple, mais c'est l'idée générale.

Votre premier programme aura probablement des inclusions/usings comme celui-ci:

#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; 
}; 

Bien sûr, ce n'est pas considéré comme la meilleure pratique d'avoir « en utilisant l'espace de noms », mais dans ce cas-je ai trouvé que « DirectX :: "sur chaque ligne de mon programme faisait de mon programme presque impossible (pour moi) à lire - alors je suis allé avec le" en utilisant ".

Bonne chance!

+0

Il dit que DirectXMath est pour Windows 8 ou plus tard. Y at-il quelque chose qui peut également être utilisé pour Windows Vsta/7? – bytecode77

+0

Aussi, je n'ai trouvé aucun tutoriel qui n'utilise pas d3dx. Peux-tu m'en indiquer un qui n'utilise pas cette bibliothèque dépréciée? – bytecode77

+0

Je l'ai utilisé avec Win7 sans problèmes. Le seul tutoriel que j'ai pu trouver était celui de MS (http://code.msdn.microsoft.com/windowsdesktop/Direct3D-Tutorial-Win32-829979ef) et c'était assez bon pour que je puisse y aller. Si vous ne voulez vraiment pas utiliser XM, vous devriez bien sûr pouvoir lier le support D3DX11.lib et DX10, etc (comme dans votre OP). Mais puisque vous débutez, vous pourriez aussi bien utiliser les bibliothèques actuelles. –

1

Probablement vous avez inclus mauvais chemin dans les propriétés, au lieu "* DirectxSDK/Lib/x86", vous avez inclus "" * DirectxSDK/Lib ».

+0

il ressemble à un commentaire. –

0

je courais sur cette question et en utilisant VS2010, mais je . trouvé la solution que vous devez le fournisseur Linker avec le fichier de bibliothèque que vous rencontrez des problèmes avec

projet-> Propriétés-> Configuration Propriétés->Linker -.> bibliothèque supplémentaires Annuaires

ajoutez ensuite le fichier de bibliothèque que vous voulez là-bas.Travaillé pour moi, j'espère travaille pour vous aussi, et alors vous n'avez pas à jouer avec DirectXMath et à trouver de nouveaux tutoriels pour cela.