2013-03-29 10 views
7

मैं विकास के लिए विंडोज 8/विजुअल स्टूडियो 2012, सी ++ 11 और डायरेक्ट 3 डी 11 का उपयोग कर रहा हूं।d3dx11.lib नहीं मिला?

मैं हालांकि, लिंकर d3dx11.lib खोजने के लिए नहीं कर पा रहे इस

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

तरह Direct3D पुस्तकालयों में शामिल हैं। उस पथ को जोड़ने के बाद जहां लाइब्रेरी प्रोजेक्ट की 'लाइब्रेरी निर्देशिका' में स्थित है, लिंकर अभी भी उन फ़ाइलों को नहीं ढूंढ सकता है। प्रोजेक्ट निर्देशिका में lib फ़ाइलों को कॉपी करने के बाद भी, यह काम नहीं करता है।

मैंने विंडोज 8 एसडीके के साथ-साथ जून 2010 से डायरेक्टएक्स एसडीके स्थापित किया। क्या मुझे कुछ याद आ रही है?

+0

क्या आप वाकई "D3DX11" lib फ़ाइल को कॉपी कर रहे हैं जिनके साथ आप प्रतिलिपि बना रहे हैं? मुझे लगता है कि आप इसे लिंक कर सकते हैं, लेकिन D3DX उपयोगिता लाइब्रेरी अब समर्थित नहीं है - वास्तव में आपको 2010 एसडीके को डाउनलोड करने की आवश्यकता नहीं है। डी 3 डीएक्स को डायरेक्टएक्समैथ लाइब्रेरी (एक्सएमएमथ) के साथ बदल दिया गया है। रूपांतरण दर्द का थोड़ा सा है, लेकिन बहुत बुरा नहीं है। –

+0

ठीक है। उसे नहीं पता था। मैं डी 3 डी 11 के लिए काफी नया हूँ। मैं देखूंगा कि इस lib के बिना इसे कैसे किया जाए। – bytecode77

+0

कभी-कभी डी 3 डीएक्स जाने का तरीका है (मैं डायरेक्टएक्समैथ का उपयोग नहीं करता क्योंकि यह सीयूडीए के साथ इंटरऑप को जटिल बनाता है)। साथ ही, डायरेक्टएक्समैथ के लिए कुछ इंटरफेस पोर्टिंग के लिए खराब हैं (उदा। प्रारंभिक)। क्या आपको कोई फिक्स मिला? (विंडोज एसडीके के साथ चिपकने और डी 3 डीएक्स तक अच्छी तरह से पहुंचने का एक तरीका?) – axon

उत्तर

8

जब अपने आप को इस के साथ काम कर, मैं यहाँ शुरू:

Where is the DirectX SDK?

तो - कि पृष्ठ के बीच के बारे में में, DirectXMath बारे में पढ़ने:

DirectXMath

यह बहुत सिर्फ सुंदर है दाएं हेडर फाइलों और "एक्स 3 डीएक्स" उपसर्गों को "एक्सएम" में बदलना शामिल है। इतना आसान नहीं है, लेकिन यह सामान्य विचार है।

आपका पहला कार्यक्रम शायद इस तरह समावेशन/usings होगा:

#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; 
}; 
बेशक

, यह सबसे अच्छा अभ्यास "नाम स्थान का उपयोग कर" के तौर पर समझा नहीं कर रहा है, लेकिन इस एक उदाहरण में मैंने पाया कि "DirectX :: "मेरे कार्यक्रम की हर पंक्ति पर मेरा प्रोग्राम लगभग असंभव (मेरे लिए) पढ़ने के लिए बना रहा था - इसलिए मैं" उपयोग "के साथ गया।

शुभकामनाएं!

+0

यह कहता है कि डायरेक्टएक्समैथ विंडोज 8 या उसके बाद के संस्करण के लिए है। क्या ऐसा कुछ है जिसका उपयोग विंडोज़ VSTA/7 के लिए भी किया जा सकता है? – bytecode77

+0

इसके अलावा, मुझे कोई ट्यूटोरियल नहीं मिला है जो d3dx का उपयोग नहीं करता है। क्या आप मुझे उस बिंदु पर इंगित कर सकते हैं जो इस वंचित पुस्तकालय का उपयोग नहीं करता है? – bytecode77

+0

मैंने इसे बिना किसी परेशानी के Win7 के साथ उपयोग किया है। एकमात्र ट्यूटोरियल जो मुझे मिल सकता था वह एमएस (http://code.msdn.microsoft.com/windowsdesktop/Direct3D-Tutorial-Win32-829979ef) था और यह मुझे जाने के लिए काफी अच्छा था। यदि आप वास्तव में एक्सएम का उपयोग नहीं करना चाहते हैं, तो निश्चित रूप से आप D3DX11.lib और DX10 समर्थन, आदि (जैसे आपके ओपी में) में लिंक करने में सक्षम होना चाहिए। लेकिन चूंकि आप अभी शुरू कर रहे हैं, साथ ही मौजूदा पुस्तकालयों का उपयोग भी कर सकते हैं। –

1

शायद आप संपत्तियों में बुरा पथ, इसके बजाय "* DirectxSDK/लिब/86" शामिल है, तो आप शामिल "" * DirectxSDK/लिब "।

+0

यह एक टिप्पणी की तरह दिखता है। –

0

मैं इस मामले की छानबीन चल रहा था और साथ ही VS2010 का उपयोग कर, लेकिन मैं तो बस । समाधान नहीं मिला आपको लगता है कि आप के साथ परेशानी हो रही है पुस्तकालय फ़ाइल के साथ लिंकर प्रदाता की जरूरत

परियोजना> गुण> विन्यास गुण>लिंकर -।> अतिरिक्त लाइब्रेरी निर्देशिकाएँ

फिर जोड़ने लाइब्रेरी फ़ाइल जो आप वहां चाहते हैं। मेरे लिए काम किया, उम्मीद है कि आपके लिए भी काम करता है, और फिर आपको DirectXMath के साथ गड़बड़ नहीं करना है और इसके लिए नए ट्यूटोरियल ढूंढना नहीं है।

संबंधित मुद्दे