不同机器编译 在目标机器上运行不一致的问题 急

ssbelle 2014-01-04 04:15:40
大家好
我最近遇到一个发布上的问题 希望得到帮助

开发工具 vs2005 一个图像库 一个相机开发SDK 一系列自己开发的DLL
发布包包含 软件自身文件EXE和DLL vcredist_x86 图像库 相机SDK

在我本机上一切运行正常 但是发布到其他机器上以后 也能够运行起来 但是在自己开发的DLL里开辟内存都出现可以认为根本不会出现的问题
然后把代码拷贝过去打算调试一下 但是奇怪的是只要在目标机器上编译过 就一切都正常了

开发机器为WIN7 64位 目标机器有WIN7 32位 也有WIN7 64位 也有XP+SP3 都是这个问题

其中有一个现象是 用一台XP的机器编译过以后 发布出去的文件在所有目标机器上都适用

为这个问题已经忙了好几天了 一直没有找到有效的方法解决
同事说是我EXE的问题或者自己开发DLL的问题 导致出现这个现象 但是为什么编译一次就会正常了呢

请各位帮忙看一下问题在哪里 或者有没有好的调试的办法?

谢谢大家
...全文
1452 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssbelle 2014-01-07
  • 打赏
  • 举报
回复
引用 25 楼 oyljerry 的回复:
[quote=引用 24 楼 ssbelle 的回复:] [quote=引用 21 楼 zgl7903 的回复:] 可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些) 从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题 把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块 等所有独立的部分好了再联调,这样可以简化调试难度
昨天晚上测试的结果如下: 1. 在目标机器上编译后的程序运行正常; 2. 在我机器上编译后的程序拷到目标机器上运行不正常; 3. 在同事机器上编译后的程序拷贝到目标机器上运行正常; 另我联系以前的经历 我的一些动态库以前项目用时 也是编译好拷贝到其他机器不正常 但是在目标机器上编译后即正常 但是没有引起足够重视 所以现在的最大怀疑是 我电脑编译出来的程序有未知的兼容问题 但是该问题的根本原因还是没有找到 高版本的问题暂时可能还不行 因为调用的第三方静态库有两层 短期内还无法拿到2008或2010的版本 我可以试试警告级别提高编译一下[/quote] 看上去还可能你的编译器或跟OS什么有一些兼容问题,如果可能,你可以再搞台机器来专门编译什么的。而且正规产品的话,发布版本都是有一个build server来完成的[/quote] 我们公司是小公司 不是很正规 汗颜。。。。
oyljerry 2014-01-07
  • 打赏
  • 举报
回复
引用 24 楼 ssbelle 的回复:
[quote=引用 21 楼 zgl7903 的回复:] 可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些) 从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题 把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块 等所有独立的部分好了再联调,这样可以简化调试难度
昨天晚上测试的结果如下: 1. 在目标机器上编译后的程序运行正常; 2. 在我机器上编译后的程序拷到目标机器上运行不正常; 3. 在同事机器上编译后的程序拷贝到目标机器上运行正常; 另我联系以前的经历 我的一些动态库以前项目用时 也是编译好拷贝到其他机器不正常 但是在目标机器上编译后即正常 但是没有引起足够重视 所以现在的最大怀疑是 我电脑编译出来的程序有未知的兼容问题 但是该问题的根本原因还是没有找到 高版本的问题暂时可能还不行 因为调用的第三方静态库有两层 短期内还无法拿到2008或2010的版本 我可以试试警告级别提高编译一下[/quote] 看上去还可能你的编译器或跟OS什么有一些兼容问题,如果可能,你可以再搞台机器来专门编译什么的。而且正规产品的话,发布版本都是有一个build server来完成的
ssbelle 2014-01-07
  • 打赏
  • 举报
回复
引用 21 楼 zgl7903 的回复:
可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些) 从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题 把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块 等所有独立的部分好了再联调,这样可以简化调试难度
昨天晚上测试的结果如下: 1. 在目标机器上编译后的程序运行正常; 2. 在我机器上编译后的程序拷到目标机器上运行不正常; 3. 在同事机器上编译后的程序拷贝到目标机器上运行正常; 另我联系以前的经历 我的一些动态库以前项目用时 也是编译好拷贝到其他机器不正常 但是在目标机器上编译后即正常 但是没有引起足够重视 所以现在的最大怀疑是 我电脑编译出来的程序有未知的兼容问题 但是该问题的根本原因还是没有找到 高版本的问题暂时可能还不行 因为调用的第三方静态库有两层 短期内还无法拿到2008或2010的版本 我可以试试警告级别提高编译一下
ssbelle 2014-01-07
  • 打赏
  • 举报
回复
引用 20 楼 bluesky_ql 的回复:
你的vs2005装sp1的补丁了么?
装过了
ssbelle 2014-01-07
  • 打赏
  • 举报
回复
引用 19 楼 zzz3265 的回复:
crt, mfc的运行库会有很多版本, 同一个机器的系统都会存在很多版本, mfc会有很多怪异的问题, 自己给exe指定manifest, 也可以检查下在不同机器上的运行库的版本, 用进程工具去看实际使用的dll( 比如procexp) 另外不正常的现象你也可以实时去调试, 这样可以更准确的找到问题
因为在X机器上有问题 把代码拷到X机器上并编译通过后 问题消失 所以无法调试 我尝试了远程调试 但是相机的问题更奇怪 我怀疑相机功能不能够远程调试
zgl7903 2014-01-07
  • 打赏
  • 举报
回复
可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些) 从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题 把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块 等所有独立的部分好了再联调,这样可以简化调试难度
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
我在DLL中使用了vector和list 这个会有问题吗?
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
引用 9 楼 oyljerry 的回复:
[quote=引用 8 楼 ssbelle 的回复:] 谢谢大家 现在更新一下情况 去掉优化一样有问题 Debug和Release是同样的问题 在我本机的虚拟机XP上编译出的版本有问题 在同事的实体XP上编译出的版本没问题 更新相机SDK还是一样的问题 远程调试暴露的错误和直接运行暴露的错误不一致 感觉远程调试时相机运行不正常 而且好像并不只是DLL里有问题 我把代码提到EXE的代码里也会有问题 真是令人崩溃的节奏
看上去实体机器XP是不是打了一些补丁等,而虚拟机没有[/quote] 有关VS2005的补丁都打过了 我怀疑是不是系统更新的问题 有的系统更新了某些补丁 有些系统没有更新 还有就是我怀疑是DLL写的不规范或者潜在隐患 导致这种问题
oyljerry 2014-01-06
  • 打赏
  • 举报
回复
引用 8 楼 ssbelle 的回复:
谢谢大家 现在更新一下情况 去掉优化一样有问题 Debug和Release是同样的问题 在我本机的虚拟机XP上编译出的版本有问题 在同事的实体XP上编译出的版本没问题 更新相机SDK还是一样的问题 远程调试暴露的错误和直接运行暴露的错误不一致 感觉远程调试时相机运行不正常 而且好像并不只是DLL里有问题 我把代码提到EXE的代码里也会有问题 真是令人崩溃的节奏
看上去实体机器XP是不是打了一些补丁等,而虚拟机没有
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
谢谢大家 现在更新一下情况 去掉优化一样有问题 Debug和Release是同样的问题 在我本机的虚拟机XP上编译出的版本有问题 在同事的实体XP上编译出的版本没问题 更新相机SDK还是一样的问题 远程调试暴露的错误和直接运行暴露的错误不一致 感觉远程调试时相机运行不正常 而且好像并不只是DLL里有问题 我把代码提到EXE的代码里也会有问题 真是令人崩溃的节奏
bluesky_ql 2014-01-06
  • 打赏
  • 举报
回复
你的vs2005装sp1的补丁了么?
Yofoo 2014-01-06
  • 打赏
  • 举报
回复
crt, mfc的运行库会有很多版本, 同一个机器的系统都会存在很多版本, mfc会有很多怪异的问题, 自己给exe指定manifest, 也可以检查下在不同机器上的运行库的版本, 用进程工具去看实际使用的dll( 比如procexp) 另外不正常的现象你也可以实时去调试, 这样可以更准确的找到问题
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
最后忙来忙去还是和刚开始一样 我把自己动态库里用到的类全部提取到EXE工程 去掉DLL的引用 在我本机上编译通过并可以正常运行 但是在目标机器上运行不正常 我把EXE工程代码拷贝到目标机器上编译并运行 一切正常 不正常的现象是: 1. 某个ListCtrl派生控件,正常是显示每条列表,列表里有文字有图像有表格都是自己重绘的,但是在目标机器上是空白,并且点击空白区域后崩溃。 2. 相机采集图像不正常现象是图像根据相机自身的宽度和高度信息重新定义图像尺寸(分配图像内存,在图像库中实现),正常应该是多少就是多少,但是不正常是设定尺寸失败,尺寸都是0。
u012997273 2014-01-06
  • 打赏
  • 举报
回复
出问题是啥问题啊,报啥错,或者啥提示啊
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
引用 14 楼 xuddk727 的回复:
应该不是vector和list的问题 你可以采取在低版本的windows上编译,然后在高版本的windows上采用兼容模式
试过了 也是不行 我下午把机器的系统更新都装了 所有版本的redistributable也装过了 都没有解决问题 我现在只能把DLL里的文件都提到EXE工程里试一下了 希望这样能够正常使用 最后的办法了
hhhh63 2014-01-06
  • 打赏
  • 举报
回复
这种现象有点象内存超界,有点电脑上超界后没有影响正常运行,而有的机器上超界后指到了别的进程。
许文君 2014-01-06
  • 打赏
  • 举报
回复
应该不是vector和list的问题 你可以采取在低版本的windows上编译,然后在高版本的windows上采用兼容模式
oyljerry 2014-01-06
  • 打赏
  • 举报
回复
引用 12 楼 ssbelle 的回复:
现在发现一个问题 有一个控件的派生类在动态库中封装以后 调用会有显示上的问题 但是把这个控件类的文件直接拷到EXE工程里调用 就没有问题 这大概是什么原因呢?
DLL对UI控件封装有问题?
ssbelle 2014-01-06
  • 打赏
  • 举报
回复
现在发现一个问题 有一个控件的派生类在动态库中封装以后 调用会有显示上的问题 但是把这个控件类的文件直接拷到EXE工程里调用 就没有问题 这大概是什么原因呢?
xurlhwhb 2014-01-05
  • 打赏
  • 举报
回复
更新图像库,更新相机开发SDK,或者用远程调试看具体的问题。
加载更多回复(6)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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