none
VS2008写的静态连接库且是发布版的程序如果放到没有安装VS2008的电脑上会出错要怎么解决? RRS feed

  • 问题

  • 在开发机上都能正常运行,随便什么样的程序都是。我已经用了静态连接库,是发布版本的。结果把exe文件放另一台电脑上的时候,如果电脑上安装了VS2008则能够正常运行,如果没安装就会一运行就异常了。我把自己电脑上的VS2008也删除掉后也是这样。如果用VC6开发的程序用静态发布版本的就不会出错了。为什么会这样?要怎么解决?
    2009年8月10日 10:47

答案

全部回复

  • VC6用的是MFC42版本。xp包含其中的运行环境。而VS2008用的是MFC9.0。xp不包含相关类库。
    麻烦把正确答案设为解答。
    2009年8月10日 13:06
    版主
  • 要怎么解决这问题?不可能自己开发的程序就自己用吧?现在XP用户还那么多

    2009年8月10日 13:12
  • 用Depend Walker看看缺哪个库.黄色的问号是缺的库
    0xBAADF00D
    • 已标记为答案 嗜血者 2009年8月17日 5:17
    2009年8月10日 13:16
    版主
  • 静态链接MFC库(如果用到的话)及其它依赖组件。
    minjiaqi
    2009年8月11日 0:52
  • 你把需要的库放在程序同级目录下,一起发布到目标机器上就可以了。
    2009年8月11日 2:40
  • 难道就没有想VC6那样自动帮你解决的?用静态连接的时候不是会把需要用到的库一起跟着程序被发布吗?

    2009年8月11日 10:41
  • VC6并没有帮你自动解决.只不过VC6的版本比较老,一般电脑上都有MFC42.dll这个库.

    静态连接的话,dll里的代码会保存在你的EXE里,并不需要把用到的库一起发布~
    0xBAADF00D
    2009年8月11日 13:55
    版主
  • 用静态链接不一定管用,把MFC静态链接了,有可能你的程序还需要其他的库,比如说crt的库,等等。。可以用第三方程序(exescope)看看你编译后的程序需要那些依赖库,除了操作系统必须的库以外,最好都放在程序一起发布,因为不能确保目标机一定有你的那些依赖库。

    2009年8月12日 1:28
  • 这个问题也见过一些,现在很多新出的游戏都是在光盘里带了VS2008或者VS2005的部分文件,在安装游戏时先给你装上
    2009年8月12日 8:31
  • 动态编译的程序需要运行库支持
    vs安装目录下有,另外也可以在微软网站上下载
    必须对应到正确的版本
    比如 vs2005,vs2005 sp1,vs2008beta vs2008 他们的redist包都是不一样的
    你的问题 去微软下redist安装包就可以了 搜 vs2008 redist
    给你个x86的链接
    http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
    2009年8月18日 7:28
  • 。。。
    静态链接也出这个问题,,如果你没有使用第三方dll,那多半是设置搞错了
    看一下c/c++选项卡中的 code generation项, Runtime Library是否设置正确 应该是 /MT
    2009年8月18日 7:42
  • 很好很强大,mfc7之后的在发行都必须要安装了不能像以前那样直接带个dll了,这点相当不方便
    2009年8月18日 7:59