注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

32位和64位平台下ULONG引起的BUG  

2016-11-22 10:02:19|  分类: C++(VC)编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
32位和64位平台下ULONG引起的BUG
这两天在调试相机的程序,需要相机厂商提供一个X64平台的驱动,结果他们的程序库只要一挂上就崩溃,不知道什么原因。后来沟通了几次也没有解决问题,相机厂商倒是挺上心,自己主动上门来看到底什么原因引起的,带着源码和家伙事儿就来调试。
整整搞了一个上午,基本有了眉目,中午吃饭回来,接着调试,找到了问题,原因非常简单,它们的动态库里提供一个数据长度的ULONG字节类型,大家都知道,在32位平台上,这个类型是32位的,但是在64位平台上,这个数据仍然是32位的。而实际情况是,他们的程序需要一个64位的长度数据,结果就挂在这里。
说明:如果是系统定义的:ULONG和LONG在32位下是32位,在64位下是64位,所以可能这个是他们自己定义的。
所以从这一点来看,发布程序的测试显得极其重要,按他们自己来说,他们在公司进行了不少的测试,从来没有遇到过这个现象,这是第一次,可能也是使用他们的客户第一次完全在64位平台上编译,发布,所以说,从目前业看,还是测试的少。估计他们只是在64位平台上使用32位的库。这个没有问题,对64位平台使用64位编译的库,估计是没测试过。
而且还有一个原因,这个现象的出现不是必然的,当你的程序数据依赖较少时,可能这个数据就没有问题了,但因为人家也没细说,咱们手中也没有源码,所以这事儿就只能这样了。做为一个现象来借鉴,深以为是。
  评论这张
 
阅读(23)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017