vs2005编译出来的程序,发布时强制让用户安装了C++ Run Time 2005 Restribution,但在个别用户处运行时都出现如下错误:
Error Signature:AppVer 2.0.1.11 ModName: msvcr80.dll ModVer 8.0.50727.1433 Offset 0004f029
我在google上搜了一下,发现很多软件譬如OutLook, Avg等等
http://freeforum.avg.com/read.php?14,137193,page=1,backpage=4,sv=
http://www.eggheadcafe.com/conversation.aspx?messageid=31717861&threadid=31717861
都有这种类似的运行问题,主要应该是mfc动态库造成的。
一种方法是用MFC静态库,但我的程序用到了别人的mfc dll,而别人的dll我没有源代码所以也没法改成静态连接。
请问还有什么其他解决方法吗?非常感谢

解决方案 »

  1.   

    在安装时,先安装.NET Framework 2.0。或者把程序所需要的DLL都带上。
      

  2.   

    你的程序带着你开发环境的dll发布
    不要放到系统目录,放到你的exe目录下即可.
      

  3.   

    通过manifest指定你带的crt,mfc运行库的dll,同时manifest中都指定你使用的版本号...
      

  4.   

    先谢谢各位,我会一个一个试的,再问个问题:现在只有几个用户能出现这个bug,但又没法跟我一起做调试,现在我想在自己的机子上重复这个bug,我试着装了.net framework 2.0 sp1,装完后的确在机子上有了版本号为8.0.50727.1433的msvcr80.dll,但我程序运行还是没有问题,我试了办公室的15台左右机子都没问题。请问我怎么在本机上重复这个bug?多谢
      

  5.   

    这种重现少数用户的bug,需要比较清楚的知道用户的环境,配置等,或者可以到有问题机器上调试,不然你就需要花一些时间来重现用户的环境...
      

  6.   

    装一下微软的重分发包试试我的vs2008编译的程序只要装过重分发包,在其他机器上都能运行。http://www.microsoft.com/downloads/thankyou.aspx?familyId=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displayLang=zh-cn
      

  7.   

    请问这个是不是需要在.exe文件所在目录放一个.manifest文件?
    我查了一下我编译的那个路径,里面是有一个abc.intermedia.manifest文件。内容为:
    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC80.MFC' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>可我机上没有8.0.50608.0这个版本,怎么改成8.0.50727.762呢?后面的keytaken写什么?
      

  8.   

    这个没多大关系!既然outlook都有,我们还怕啥