异常求助

WuZongBo 2009-12-04 04:30:03

((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()
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
WceUi 2009-12-04
  • 打赏
  • 举报
回复
个人觉得你的代码是没有问题的
或者你这样写
CWnd *pWnd = GetDlgItem(ctrId);
if (pWnd->IsKindOf(RUNTIME_CLASS(CBitmapButton)))
{
((CBitmapButton*)GetDlgItem(ctrId))->LoadBitmaps(resId,0,0,0);
}
看看还会不会出错
guopeixin 2009-12-04
  • 打赏
  • 举报
回复
深奥,帮顶了,学习

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧