我编的MFC程序在其他机器上没法运行,发现是我用的manifest中CRT是4053版本,也就是MFC80.dll是4053,而用户机上只有762版本的MFC80.dll,请问我怎么在编译的时候用762版本的MFC80.dll呢?
我去掉C:\WINDOWS\WinSxS\Policies\x86_policy.8.0.Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_x-ww_77c24773\8.0.50727.4053.policy
这行
<bindingRedirect oldVersion="8.0.50727.42-8.0.50727.4053" newVersion="8.0.50727.4053"/>
还是不行,请问我应该怎么改?多谢

解决方案 »

  1.   

    不太清楚怎么改版本。
    不过如果是我,直接把mfc的库一起发布,虽然有点宣宾夺主的味道。
      

  2.   

    如果你要直接编译的结果对方机器上能用,那你就要更新你自己的MFC80.dll的版本(关联Lib需要同步变更),然后修改你的manifest再编译,就可以了。但一般不推荐这么做。建议你:在发布的时候,把你自己机器上的MFC80.dll打包进去就可以了。相关的再发行包的名称大概是:Microsoft_VC80_MFC_x86.msm,楼主可以根据自己的具体版本需求具体选择。Windows的Side by Side功能是允许不同版本的DLL在一台机器上共存的。你这要确保你需要的版本在目标机器上有就行了。其他的什么版本跟你是不搭嘎的。
      

  3.   

    你说的包是vcredist_x86.exe,本来客户在安装我软件的时候强制安装了这个包,此时用户机子是762的restribution. 但现在我因为更新windows使得现在我的是4053的包。我发现这是因为我安装了
    Microsoft Visual studio C++ 2005 ATL update kb973923这个包的缘故。
    一种方法是我强制让用户安装上面那个包。但我不熟悉这个包,而且看名字也不是微软正式发布的VS2005C++ Restribution的安装包,所以不放心。
    另一方法是我机子编译的时候选择762这个MFC动态库编译,我想问的就是如何选择?