2009-08-15 38 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 2009-08-15 22:34:29

回答

14

這是一個known issue stl :: vector不能正確包含對齊數據,如D3DXMATRIXA16。一個海報pinned the root cause(或至少,其中之一?):vector :: resize的聲明按值傳遞對齊的數據,而不是作爲const引用。 該線程提出了幾種解決方法,最安全的是刪除stl :: vector一起。您可能還想自己修復stl頭文件並重新編譯 - 這實際上可能比聽起來更容易,但我自己並沒有這樣做。

編輯:現在鏈接已損壞(謝謝@David Menard),這裏是an alternative, more elaborate answer

該問題在VS2012RC中修復 - 這裏有一個鏈接a corresponding connect issue。事實證明,這實際上是C++標準本身的一個問題,在2008年得到修復。

+0

鏈接被破壞 – 2012-06-22 19:27:21

2

它看起來像std :: vector類需要模板參數對齊(1);很可能是某種快速索引。

相關問題