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

不同机器编译 在目标机器上运行不一致的问题 急
大家好 
我最近遇到一个发布上的问题 希望得到帮助

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

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

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

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

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

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

谢谢大家

------解决方案--------------------
去掉“优化”看看如何
------解决方案--------------------
你运行的是DEBUG版吗?
------解决方案--------------------
怀疑是编译器在不同系统下为系统做的优化出了问题。
------解决方案--------------------
先看编译属性,优化什么的。
不同平台,编译对应的32,64版本程序
------解决方案--------------------
直接在32位机器上编绎后装在其它不同版本的操作系统下试试,或者直接查代码,看看内存申请的代码,也要注意一些函数的使用范围,有的函数对操作系统有要求,不支持所有操作系统,尽量选择所有版本操作系统的函数
------解决方案--------------------
使用了静态库?
如果使用动态库,即使不同版本内核代码不一样,应该也不会有影响
------解决方案--------------------
更新图像库,更新相机开发SDK,或者用远程调试看具体的问题。
------解决方案--------------------
引用:
谢谢大家 
现在更新一下情况

去掉优化一样有问题
Debug和Release是同样的问题
在我本机的虚拟机XP上编译出的版本有问题 在同事的实体XP上编译出的版本没问题
更新相机SDK还是一样的问题
远程调试暴露的错误和直接运行暴露的错误不一致 感觉远程调试时相机运行不正常

而且好像并不只是DLL里有问题 我把代码提到EXE的代码里也会有问题

真是令人崩溃的节奏

看上去实体机器XP是不是打了一些补丁等,而虚拟机没有
------解决方案--------------------
引用:
现在发现一个问题

有一个控件的派生类在动态库中封装以后 调用会有显示上的问题 但是把这个控件类的文件直接拷到EXE工程里调用 就没有问题 

这大概是什么原因呢?

DLL对UI控件封装有问题?
------解决方案--------------------
应该不是vector和list的问题
你可以采取在低版本的windows上编译,然后在高版本的windows上采用兼容模式
------解决方案--------------------
这种现象有点象内存超界,有点电脑上超界后没有影响正常运行,而有的机器上超界后指到了别的进程。
------解决方案--------------------
出问题是啥问题啊,报啥错,或者啥提示啊
------解决方案--------------------
crt, mfc的运行库会有很多版本, 同一个机器的系统都会存在很多版本, mfc会有很多怪异的问题, 自己给exe指定manifest, 
也可以检查下在不同机器上的运行库的版本, 用进程工具去看实际使用的dll( 比如procexp)
另外不正常的现象你也可以实时去调试, 这样可以更准确的找到问题

------解决方案--------------------
你的vs2005装sp1的补丁了么?
------解决方案--------------------
可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些)
从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题
把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块
等所有独立的部分好了再联调,这样可以简化调试难度
------解决方案--------------------
引用:
Quote: 引用:

可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些)
从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题
把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块
等所有独立的部分好了再联调,这样可以简化调试难度


昨天晚上测试的结果如下:
1. 在目标机器上编译后的程序运行正常;
2. 在我机器上编译后的程序拷到目标机器上运行不正常;
3. 在同事机器上编译后的程序拷贝到目标机器上运行正常;

另我联系以前的经历 我的一些动态库以前项目用时 也是编译好拷贝到其他机器不正常 但是在目标机器上编译后即正常 但是没有引起足够重视 所以现在的最大怀疑是

我电脑编译出来的程序有未知的兼容问题 但是该问题的根本原因还是没有找到

高版本的问题暂时可能还不行 因为调用的第三方静态库有两层 短期内还无法拿到2008或2010的版本
我可以试试警告级别提高编译一下

看上去还可能你的编译器或跟OS什么有一些兼容问题,如果可能,你可以再搞台机器来专门编译什么的。而且正规产品的话,发布版本都是有一个build server来完成的