- ((CBitmapButton*)GetDlgItem(ctrId))->LoadBitmaps(resId,0,0,0);
以上代码反复执行几次就会出现以下异常。
First-chance exception in Ad.exe:0x80000002:Datatype Misalignment
我试过网上的方法但是还是不行,有网友说是指针不能瞎转。
以下是网上的解决办法:
Datatype misalignment竟然是ARM著名的一个问题.解释大致是ARM要求每个变量都需要4Bytes倍数对齐,VC缺省时8Byte对齐,ARM的编译器和x86的不太一样,不会取整,所以有小于32位的变量的话,后边的一个变量会被截断,最好的办法是32位。Project Settings -> C/C++ -> Code Generation 设置为struct member alignement 1.或者采用#prgma pack设置结构的对齐字节数。如下:
#pragma pack(1)
// Definition structure/classe align is 1 byte
#pragma pack()