वीएस2012 के साथ संकलन और डायरेक्टएक्समैथ लाइब्रेरी के साथ काम करने के लिए, मुझे एक समस्या का सामना करना पड़ा जहां यह दिखाई दिया कि संकलक मेरे एक्सएममैट्रिक्स को संरेखित नहीं कर रहा था। मैंने इस मुद्दे को निम्नलिखित में सरल बना दिया।ऑटो कीवर्ड का उपयोग करते समय संरेखण 16 का सम्मान नहीं किया गया?
#include <DirectXMath.h>
using namespace DirectX;
int _tmain(int argc, _TCHAR* argv[])
{
auto m1 = XMMatrixIdentity();
auto m2 = XMMatrixIdentity();
auto t1 = XMMatrixTranspose(m1); // sometimes access violation occurs here
auto t2 = XMMatrixTranspose(m2); // or sometimes here
return 0;
}
फिर से चल रहा है अधिक से अधिक कोड कभी कभी, एक "पहुँच उल्लंघन पढ़ने स्थान 0xFFFFFFFF" पहले पक्षांतरित पर कारण होगा कभी कभी दूसरे पर।
मुझे पता चला है कि यह इस तथ्य के कारण है कि एम 1 और एम 2 ठीक तरह से गठबंधन नहीं किए जा रहे हैं। "XMMATRIX" के साथ "ऑटो" को प्रतिस्थापित करने से समस्या हल हो रही है, इसलिए मेरा संदेह एक कंपाइलर बग है, लेकिन यह भी संभव है कि मैं कुछ गलत कर रहा हूं, या कुछ विकल्प सक्षम नहीं कर रहा हूं।
क्या मेरे कोड में कुछ गड़बड़ है या यह एक कंपाइलर बग है?
आप किसी भी मतभेद की जांच करने के परिणामस्वरूप विधानसभा पर एक नज़र किया है? –
@ जेएन। हां, अगर मैं "ऑटो" का उपयोग नहीं करता हूं तो इसमें निश्चित रूप से अतिरिक्त निर्देश हैं जो एएसपी के साथ खराब हो जाते हैं और (मुझे लगता है) यह सुनिश्चित करने में मदद करता है कि दो एक्सएमएमएटीआरएक्स ठीक से गठबंधन हैं। – MerickOWA
ठीक है, जब तक कि 'XMMATRIX' एक मैक्रो नहीं है, मैं एक कंपाइलर बग के लिए वोट देता हूं। यदि यह एक मैक्रो है तो यह एक डीएक्स बग हो सकता है ... –