开发环境:VC++ 2008,Notes C API应用程序采用默认的8字节对齐方式,DLL采用1字节对齐方式。调试时发现调用崩溃,把DLL采用8字节对齐重新编译则无此问题。记得在VC6环境中也是这样编译的,运行一直正常。请高手帮忙分析原因。

解决方案 »

  1.   

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

  2.   

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

  3.   

    顶,实在是厉害。我发现VC从远古时代就有这个问题啊,非得REBUILD一下才好。