字节对齐是否影响对DLL的函数调用?

tttk 2010-02-04 11:48:00
开发环境:VC++ 2008,Notes C API

应用程序采用默认的8字节对齐方式,DLL采用1字节对齐方式。

调试时发现调用崩溃,把DLL采用8字节对齐重新编译则无此问题。

记得在VC6环境中也是这样编译的,运行一直正常。请高手帮忙分析原因。
...全文
213 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fpcc 2010-02-09
  • 打赏
  • 举报
回复
顶,实在是厉害。我发现VC从远古时代就有这个问题啊,非得REBUILD一下才好。
tttk 2010-02-04
  • 打赏
  • 举报
回复
已经解决。

问题是因为debug模式下的增量编译,导致DLL中两个编译时需要link的obj之间,存在不一致的边界对齐方式,修改后未能及时更新。

rebuild后问题解决。
fpcc 2010-02-04
  • 打赏
  • 举报
回复
应该没有什么问题,引起崩溃,估计是你的缓冲区的读写位置不对。你可以这样试一下,不全读或写,可能就不会出现这种错误了。换句话说,如果不对齐,可能缓冲区内的数据大小是不同的,你可以读写操作时按照大的一方来用,越界后引起崩溃。
举个例子,在GPRS的图像解析上,曾经用过你说的这种方法,结果就是,图是不准确的。没有别的现象。可能你的RP值较低,所以崩溃了。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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