不同机器编译 在目标机器上运行不一致的有关问题
不同机器编译 在目标机器上运行不一致的问题 急
大家好
我最近遇到一个发布上的问题 希望得到帮助
开发工具 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,或者用远程调试看具体的问题。
------解决方案--------------------
看上去实体机器XP是不是打了一些补丁等,而虚拟机没有
------解决方案--------------------
DLL对UI控件封装有问题?
------解决方案--------------------
应该不是vector和list的问题
你可以采取在低版本的windows上编译,然后在高版本的windows上采用兼容模式
------解决方案--------------------
这种现象有点象内存超界,有点电脑上超界后没有影响正常运行,而有的机器上超界后指到了别的进程。
------解决方案--------------------
出问题是啥问题啊,报啥错,或者啥提示啊
------解决方案--------------------
crt, mfc的运行库会有很多版本, 同一个机器的系统都会存在很多版本, mfc会有很多怪异的问题, 自己给exe指定manifest,
也可以检查下在不同机器上的运行库的版本, 用进程工具去看实际使用的dll( 比如procexp)
另外不正常的现象你也可以实时去调试, 这样可以更准确的找到问题
------解决方案--------------------
你的vs2005装sp1的补丁了么?
------解决方案--------------------
可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些)
从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题
把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块
等所有独立的部分好了再联调,这样可以简化调试难度
------解决方案--------------------
看上去还可能你的编译器或跟OS什么有一些兼容问题,如果可能,你可以再搞台机器来专门编译什么的。而且正规产品的话,发布版本都是有一个build server来完成的
大家好
我最近遇到一个发布上的问题 希望得到帮助
开发工具 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,或者用远程调试看具体的问题。
------解决方案--------------------
看上去实体机器XP是不是打了一些补丁等,而虚拟机没有
------解决方案--------------------
DLL对UI控件封装有问题?
------解决方案--------------------
应该不是vector和list的问题
你可以采取在低版本的windows上编译,然后在高版本的windows上采用兼容模式
------解决方案--------------------
这种现象有点象内存超界,有点电脑上超界后没有影响正常运行,而有的机器上超界后指到了别的进程。
------解决方案--------------------
出问题是啥问题啊,报啥错,或者啥提示啊
------解决方案--------------------
crt, mfc的运行库会有很多版本, 同一个机器的系统都会存在很多版本, mfc会有很多怪异的问题, 自己给exe指定manifest,
也可以检查下在不同机器上的运行库的版本, 用进程工具去看实际使用的dll( 比如procexp)
另外不正常的现象你也可以实时去调试, 这样可以更准确的找到问题
------解决方案--------------------
你的vs2005装sp1的补丁了么?
------解决方案--------------------
可以用更高版本的Vs编译环境试试看,编译警告级别设置到最高,注意任何警告 (高版本的检验更严格,对系统的兼容能力也更强些)
从2个不正常的问题来看,第二个问题可能会引发第一个问题,当然点击空白奔溃,这肯定是你控件的问题
把问题拆解了调试,如list空白的问题,可以先使用图像文件做数据源,这样就分离了与相机相关的问题,相机部分独立写测试模块
等所有独立的部分好了再联调,这样可以简化调试难度
------解决方案--------------------
看上去还可能你的编译器或跟OS什么有一些兼容问题,如果可能,你可以再搞台机器来专门编译什么的。而且正规产品的话,发布版本都是有一个build server来完成的