配置不正确与清单文件manifest

上次把FMF转到VC8后在Vista操作系统上运行时遇到的配置不正确的问题,我当时是采用重新定义缺省的WINVER来解决的。但这只解决了一部份问题,因为生成的程序只能在Vista上运行而不能在XP或者2003上正确运行了。后来查了些资料,确定是清单文件在作怪。由于VC6的工程port到vc8后,缺省会嵌入清单文件到生成的二进制文件中。我采用的办法是:

1、把所用项目的生成清单文件(在连接选项处)和嵌入清单文件(在清单工具处)都置为否,然后重新生成。

2、为主程序以及直接使用的DLL文件生成相应的清单文件:
<?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"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.MFC" version="8.0.50608.0" processorArchitecture="x86"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

3、生成Microsoft.VC80.MFC.manifest文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable/>
    <assemblyIdentity
        type="win32"
        name="Microsoft.VC80.MFC"
        version="8.0.50608.0"
        processorArchitecture="x86"
    />
    <file name="mfc80u.dll"/>
</assembly>

4、生成Microsoft.VC80.CRT.manifest文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable/>
    <assemblyIdentity
        type="win32"
        name="Microsoft.VC80.CRT"
        version="8.0.50608.0"
        processorArchitecture="x86"
    />
    <file name="msvcr80.dll"/>
    <file name="msvcp80.dll"/>
</assembly>

5、把mfc80u.dll、msvcr80.dll、msvcp80.dll拷贝到同一目录下。

到这里就全部搞定了,生成的程序可以在windows 2000以上的所有操作系统上运行。有一个值得提及的细节是,程序中用LoadLibrary加载的插件并不用生成相应的清单文件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值