2012-09-17 11 views
15

मेरा विकास प्लेटफार्म विंडोज 7 x64 है। मैंने वीएस2012 स्थापित किया है और मैं एक परियोजना को संकलित करना चाहता हूं जिसमें कुछ Dx11 कोड शामिल हैं।d3dx11.h विंडोज 8.0 में नहीं

विशेष रूप से, यह निम्न फ़ाइलों में शामिल हैं:

#include <d3dx11.h> 
#include <d3dx10.h> 

और लिंक

#pragma comment (lib, "d3dx11.lib") 
#pragma comment (lib, "d3dx10.lib") 

को मैं पहले से ही VS2011 मेरे विकास मशीन पर स्थापित किया है, लेकिन मैं VS2012 में इकाई परीक्षण सुविधाओं की कोशिश करना चाहता था देशी सी ++ के लिए।

वीएस2011 स्थापित करने और डायरेक्टशो कोड पर काम करने के कारण, मेरे पास विंडोज 7.1 एसडीके स्थापित है।

VS2012 इस उठाया और 7.1 एसडीके के लिए संदर्भ की थी, लेकिन 7.1 एसडीके संदर्भित साथ VS2012 के तहत अपने प्रोजेक्ट के संकलन त्रुटियों दिया:

"warning C4005: '__useHeader' : macro redefinition" 

मैं इस googled और a query like mine on social.msdn.microsoft.com पाया। और इस समस्या को हल करने के लिए समाधान 7.1 एसडीके के बजाय विंडोज 8 किट के साथ जोड़ने की सिफारिश की गई।

विंडोज 8 किट में d3d11.h जैसे शीर्षलेख शामिल हैं, लेकिन d3dx11.h नहीं।

मैं विंडोज 8 किट के साथ d3dx11 (डीएक्स एसडीके से) कैसे शामिल कर सकता हूं, लेकिन एकाधिक "मैक्रो रेडिफिनेशन" त्रुटियों के बिना?

उत्तर

17

मुझे this MSDN page में निम्न बल्कि कष्टप्रद उद्धरण मिला।

D3DX विंडोज 8 में Direct3D प्रयोग करने के लिए विहित एपीआई नहीं माना जाता है और इसलिए इसी विंडोज SDK के साथ शामिल नहीं है। डायरेक्ट 3 डी एपीआई के साथ काम करने के लिए वैकल्पिक समाधान की जांच करें।


संशोधित परियोजना के कुलपति ++ निर्देशिका:

इस तरह के विंडोज 7 के रूप में विरासत परियोजनाओं के लिए, (और पुराने) DirectX एसडीके नमूने, निम्न चरणों D3DX का उपयोग कर DirectX SDK के साथ अनुप्रयोगों के निर्माण के लिए आवश्यक हैं एसडीके हेडर और पुस्तकालयों के लिए सही ऑर्डर का उपयोग करने के लिए निम्नानुसार है।

i। प्रोजेक्ट के लिए ओपन प्रॉपर्टीज और वीसी ++ डायरेक्टरीज़ पेज का चयन करें।
ii। सभी विन्यास और सभी प्लेटफॉर्म का चयन करें।
iii।

निष्पादन निर्देशिकाएँ: (दाईं ओर ड्रॉप-डाउन पर)

निर्देशिकाएँ शामिल हैं:; $ (DXSDK_DIR) शामिल करें

लाइब्रेरी निर्देशिकाएँ शामिल करें $ (IncludePath) के रूप में इन निर्देशिका सेट करें : $ (LibraryPath); $ (DXSDK_DIR) लिब \ 86

iv। आवेदन पर क्लिक करें।
v। X64 प्लेटफ़ॉर्म चुनें। vi। इस प्रकार पुस्तकालय निर्देशिका सेट करें:

लाइब्रेरी निर्देशिकाएँ: $ (LibraryPath), $ (DXSDK_DIR) लिब \ x64

जहाँ भी "d3dx9.h", "d3dx10.h" , या "d3dx11.h" आपके प्रोजेक्ट में शामिल हैं, स्पष्ट रूप से "d3d9.h", "d3d10.h" और "dxgi.h", या "d3d11.h" और "dxgi.h" को स्पष्ट रूप से शामिल करना सुनिश्चित करें। यह सुनिश्चित करने के लिए कि आप नए संस्करण को उठा रहे हैं।

यदि आवश्यक हो तो आप चेतावनी C4005 को अक्षम कर सकते हैं; हालांकि, यह चेतावनी इंगित करता है कि आप इन शीर्षकों के पुराने संस्करण का उपयोग कर रहे हैं।

अपनी परियोजना में DXGIType.h के सभी संदर्भों को हटाएं। यह हेडर विंडोज एसडीके में मौजूद नहीं है, और डायरेक्टएक्स एसडीके संस्करण नए winerror.h के साथ संघर्ष।

सभी डी 3 डीएक्स डीएलएल डायरेक्टएक्स एसडीके स्थापना द्वारा आपके विकास कंप्यूटर पर स्थापित किए गए हैं। सुनिश्चित करें कि आवश्यक डी 3 डीएक्स निर्भरता किसी नमूने के साथ या आपके आवेदन के साथ फिर से वितरित की जाती है यदि यह दूसरी मशीन पर ले जाया गया है।

ध्यान रखें कि D3DX11 के वर्तमान उपयोगों के लिए प्रतिस्थापन तकनीकों में DirectXTex और DirectXTK शामिल हैं। D3DXMath को DirectXMath द्वारा प्रतिस्थापित किया गया है।

एफएफएस माइक्रोसॉफ्ट, कृपया इस तरह के एपीआई के मध्य संस्करण को मत बदलें !!!

+7

सहमत हैं, खासकर जब डायरेक्टएक्स 11 पर मौजूद सभी पुस्तकें d3dx11.h, पागलपन का व्यापक उपयोग करती हैं! – JMK

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