2009-08-15 11 views
9

मैं D3DXMATRIXA16 इसलिए की तरह के लिए एक वेक्टर बनाने के लिए कोशिश कर रहा हूँ: vector<D3DXMATRIXA16> matrices; और त्रुटि हो रही है:त्रुटि C2719: '_Val': __declspec (align ('16 ') के साथ औपचारिक पैरामीटर को गठबंधन नहीं किया जाएगा?

 d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) : 

error C2719: '_Val': formal parameter with __declspec(align('16')) won't be aligned

e:\projects\emuntitled\em\emscratch\emshadow.h(60) : 

:see reference to class template instantiation 'std::vector<_Ty>' being compiled with [ _Ty=D3DXMATRIXA16 ]

कि वास्तव में क्यों है?

किसी भी मदद के लिए धन्यवाद!

+0

क्या आप कोड का उपयोग कर सकते हैं जहां आप इसका उपयोग करते हैं? – Tchami

उत्तर

14

यह known issue है कि stl :: वेक्टर ठीक से संरेखित डेटा, जैसे D3DXMATRIXA16 नहीं हो सकता है। एक पोस्टर pinned the root cause (या कम से कम, उनमें से एक?): वेक्टर :: आकार बदलने की घोषणा मूल्य से संरेखित डेटा को पास करती है, न कि कॉन्स्ट संदर्भ के रूप में। उस धागे में कई कामकाज सुझाए गए थे, सबसे सुरक्षित स्टॉल :: वेक्टर पूरी तरह से छोड़ रहा है। आप स्वयं को एसटीएल हेडर को ठीक करना और फिर से कंपाइल करना भी चाह सकते हैं - यह वास्तव में लगता है कि यह आसान हो सकता है, लेकिन मैंने ऐसा नहीं किया है।

संपादित करें: लिंक अब टूटा हुआ है (धन्यवाद @ डेविड मेनर्ड), यहां an alternative, more elaborate answer है।

समस्या VS2012RC में तय की गई है - यहां a corresponding connect issue का एक लिंक है। यह वास्तव में सी ++ मानक में एक मुद्दा था, जिसे 2008 में तय किया गया था।

+0

लिंक टूटे हैं –

2

ऐसा लगता है कि std :: वेक्टर क्लास को टेम्पलेट पैरामीटर को संरेखित करने की आवश्यकता है (1); कुछ प्रकार के फास्ट इंडेक्सिंग की संभावना है।

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