2013-03-29 21 views
7

Ich verwende Windows 8/Visual Studio 2012, C++ 11 und Direct3D 11 für die Entwicklung.d3dx11.lib nicht gefunden?

I gehören die Direct3D-Bibliotheken wie diese

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

Jedoch kann der Linker die d3dx11.lib zu finden scheinen. Nach dem Hinzufügen des Pfads, in dem sich die Bibliothek befindet, zu den 'Bibliotheksverzeichnissen' des Projekts, kann der Linker diese Dateien immer noch nicht finden. Auch nachdem ich die lib-Dateien in das Projektverzeichnis selbst kopiert habe, funktioniert es nicht.

Ich habe das Windows 8 SDK sowie das DirectX SDK von Juni 2010 installiert. Fehle ich irgendetwas?

+0

Sind Sie sicher, dass die lib-Datei "D3DX11" mit den kopierten Dateien enthalten ist? Ich nehme an, Sie können es verknüpfen, aber die D3DX-Dienstprogramm-Bibliothek wird nicht mehr unterstützt - in der Tat müssen Sie das 2010 SDK überhaupt nicht herunterladen. D3DX wurde durch die DirectXMath-Bibliothek (XMMath) ersetzt. Die Umstellung ist ein bisschen Schmerz, aber nicht so schlimm. –

+0

Ok. Wusste das nicht. Ich bin ziemlich neu in D3D11. Ich werde sehen, wie es ohne diese Lib geht. – bytecode77

+0

Manchmal D3DX ist der Weg zu gehen (ich verwende nicht DirectXMath, weil es Interop mit CUDA erschwert). Außerdem sind einige Schnittstellen für DirectXMath schlecht für die Portierung (z. B. Initialisierung). Hast du eine Lösung gefunden? (Eine Möglichkeit, mit Windows SDK zu bleiben und ordentlich auf D3DX zuzugreifen?) – axon

Antwort

8

Wenn mit diesem selbst zu tun, begann ich hier:

Where is the DirectX SDK?

dann - etwa in der Mitte dieser Seite, über DirectXMath Lesen:

DirectXMath

Es ist ziemlich einfach einschließlich der richtigen Header-Dateien und Ändern der "D3DX" -Präfixe zu "XM". Nicht ganz so einfach, aber das ist die allgemeine Idee.

Ihr erstes Programm wird wahrscheinlich Einschlüsse/usings wie diese:

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

Natürlich ist es nicht best practice als „mit Namespace“ zu haben, aber in diesem Fall fand ich, dass „DirectX :: "In jeder Zeile meines Programms war es für mich fast unmöglich mein Programm zu lesen - also ging ich mit dem" Verwenden ".

Viel Glück!

+0

Es sagt DirectXMath ist für Windows 8 oder höher. Gibt es etwas, das auch für Windows Vsta/7 verwendet werden kann? – bytecode77

+0

Auch habe ich keine Tutorials gefunden, die nicht d3dx verwendet. Kannst du mich auf einen hinweisen, der diese Bibliothek nicht benutzt? – bytecode77

+0

Ich habe es mit Win7 ohne Probleme verwendet. Das einzige Tutorial, das ich finden konnte, war MS (http://code.msdn.microsoft.com/windowsdesktop/Direct3D-Tutorial-Win32-829979ef) und das war gut genug, um mich in Gang zu bringen. Wenn Sie XM wirklich nicht verwenden möchten, sollten Sie natürlich in der Lage sein, in D3DX11.lib und DX10 Unterstützung, usw. (wie in Ihrem OP) zu verknüpfen. Aber da Sie gerade erst anfangen, könnten Sie auch aktuelle Bibliotheken verwenden. –

1

Wahrscheinlich enthalten Sie schlechte Pfad in Eigenschaften, stattdessen "* DirectxSDK/Lib/x86", Sie enthalten "" * DirectxSDK/Lib“.

+0

es sieht wie ein Kommentar aus. –

0

Ich wurde in dieser Frage läuft auch VS2010, aber ich nur ., die Lösung gefunden Du brauchst den Linker mit der Bibliotheksdatei-Provider, das Sie haben Probleme mit

Ausbau-> Einstellungen-> Konfiguration Eigenschaften->Linkers. -> Zusätzliche Bibliotheksverzeichnisse

Dann wird der hinzufügen Bibliotheksdatei, die Sie dort haben wollen. Arbeitete für mich, hoffentlich funktioniert auch für Sie, und dann müssen Sie sich nicht mit DirectXMath herumärgern und neue Tutorials dafür finden.

Verwandte Themen