vc2008在vista下编译的程序无法在XP系统下运行

simouse 2009-06-22 01:03:10
同样的安装程序在干净的Vista下是可以用的,在 XP下不可以,所有的依赖DLL我都找到了,可还是不行。

这个问题谁遇到过?有没有好的办法?

...全文
61 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyqzff 2009-10-10
  • 打赏
  • 举报
回复
你好,我现在也遇到了这样的问题,请问你是怎样解决的呢?谢谢!
snail_1989 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 rabbii 的回复:]
用静态链接库就可以解决问题吧。
[/Quote]
是滴,用静态链接库,mfc做出来的东西都可以再XP上跑,只不过文件大了太多。。。。
simouse 2009-06-23
  • 打赏
  • 举报
回复
感谢大家,问题已经解决!

rabbii 2009-06-22
  • 打赏
  • 举报
回复
用静态链接库就可以解决问题吧。
jest850615 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hikaliv 的回复:]
嗯,如果你是基于 WINAPI 做的开发的话,怕是会有问题。

你是NATIVE C++ 还是C++.net ?

若是前者,你需要在你的程序中,不得使用在VISTA平台才新添加的API,使其可以与XP和2K平台兼容,而且,你的程序需要在XP平台下重新编译一遍。因为,你所使用到的WINAPI可能在高级平台下,发生了些许改变。

若为后者,可能是.net framework库的问题。保持两个系统的.net framework 库同步。
[/Quote]
up
机智的呆呆 2009-06-22
  • 打赏
  • 举报
回复
up吧~~
bjwantong 2009-06-22
  • 打赏
  • 举报
回复
http://www.bjwtnd.cn/zgc
老邓 2009-06-22
  • 打赏
  • 举报
回复
原因是:你程序中使用了Vista才支持的API。
老邓 2009-06-22
  • 打赏
  • 举报
回复
#ifndef WINVER // Specifies that the minimum required platform is Windows Vista.
#define WINVER 0x0501 // WinXP
#endif

#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
#define _WIN32_WINNT 0x0501 // WinXP
#endif
skyxie 2009-06-22
  • 打赏
  • 举报
回复
所有的依赖DLL我都找到了
--------------------------------------------
VS2008生成的项目有个targetver.h,里面定义的windows版本为Vista!
vista某些结构体的size比XP的大! 会造成在xp上运行时出错

把 targetver.h 里面的 0x0600 修改为 0x0500(win2k) or 0x0501 (xp)

----------------------------------------------------------------------------
#ifndef WINVER // Specifies that the minimum required platform is Windows Vista.
#define WINVER 0x0501 // WinXP
#endif

#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
#define _WIN32_WINNT 0x0501 // WinXP
#endif
lambert_s 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hikaliv 的回复:]
嗯,如果你是基于 WINAPI 做的开发的话,怕是会有问题。

你是NATIVE C++ 还是C++.net ?

若是前者,你需要在你的程序中,不得使用在VISTA平台才新添加的API,使其可以与XP和2K平台兼容,而且,你的程序需要在XP平台下重新编译一遍。因为,你所使用到的WINAPI可能在高级平台下,发生了些许改变。

若为后者,可能是.net framework库的问题。保持两个系统的.net framework 库同步。
[/Quote]
顶!
lw1a2 2009-06-22
  • 打赏
  • 举报
回复
清单文件的问题?

不能执行报什么错?
光宇广贞 2009-06-22
  • 打赏
  • 举报
回复
你找到所有依赖的DLL是没有用的。
那些只是OS接口,但是不同的平台,其OS接口与底层的交互方式是不一样的,一定有差别,你把VISTA的kernal放到XP下跑,一定有问题,麻烦就在于,好像你只要用到WINAPI,几乎避免不了用到KERNAL32.DLL之类的库文件吧……

你的要求等于是“跨平台”了……很明显,native c++的跨平台能力是很不怎么的的。
WOBUGUAN 2009-06-22
  • 打赏
  • 举报
回复
这个应该是人品问题
lingyin55 2009-06-22
  • 打赏
  • 举报
回复
没有试过,估计在vista下跑vs2008的人比较少,vista太失败了。。
发个链接楼主可以看下
http://hi.baidu.com/fairysky/blog/item/130dda13db7b050a5aaf53be.html
光宇广贞 2009-06-22
  • 打赏
  • 举报
回复
嗯,如果你是基于 WINAPI 做的开发的话,怕是会有问题。

你是NATIVE C++ 还是C++.net ?

若是前者,你需要在你的程序中,不得使用在VISTA平台才新添加的API,使其可以与XP和2K平台兼容,而且,你的程序需要在XP平台下重新编译一遍。因为,你所使用到的WINAPI可能在高级平台下,发生了些许改变。

若为后者,可能是.net framework库的问题。保持两个系统的.net framework 库同步。

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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