twe*_*ypi 10 c++ directx vector matrix alignment
我正在尝试D3DXMATRIXA16像这样创建一个向量:vector<D3DXMATRIXA16> matrices;我收到错误:
Run Code Online (Sandbox Code Playgroud)d:\Program Files\Microsoft Visual Studio 9.0\VC\include\vector(717) :错误C2719:'_ VAL':带__declspec的形式参数(对齐('16'))将不对齐
Run Code Online (Sandbox Code Playgroud)e:\projects\emuntitled\em\emscratch\emshadow.h(60) ::请参阅使用[_Ty = D3DXMATRIXA16]编译的类模板实例化'std :: vector <_Ty>'的引用
为什么呢?
谢谢你的帮助!
Ofe*_*lon 15
stl :: vector无法正确包含对齐数据,例如D3DXMATRIXA16,这是一个已知问题 [link dead].一张海报固定了根本原因(或者至少是其中一个?):vector :: resize的声明按值传递对齐的数据,而不是const引用.在该线程中提出了几种解决方法,最安全的是完全删除stl :: vector.您可能还想自己修复stl标头并重新编译 - 这实际上可能比听起来更容易,但我自己并没有这样做.
编辑:链接现在被打破(感谢@David Menard),这是一个替代的,更精细的答案.
该问题在VS2012RC中得到修复 - 这是指向相应连接问题 [link dead]的链接.事实证明,它实际上是C++标准本身的一个问题,在2008年修复.