大部分软件在打包时会将vc2008运行库安装包打包进去,安装时调用,这样就解决了dll依赖问题
然而好多系统本身存在一些莫名其妙的问题,vc2008运行库安装包是无法正确安装的
这就需要免安装vc2008运行库,然后能将exe执行起来的方案
/MT编译固然是最省事的,但是有些库恰恰是那种闭源的bin,没有源代码,人家就是依赖vc2008
这时候怎么办呢?
首先有两种场景:
1.支持Win2000,最简单,将msvcr90.dll msvcX90.dll等文件和exe放在一起就好了
2.XP以上系统使用了sxs解决dll冲突问题,因此需要创建一个Microsoft.VC90.CRT的目录和exe放在一起,这个目录里面放 msvcX90.dll,然后再放一个清单文件Microsoft.VC90.CRT.manifest内容如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation. All rights reserved. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr90.dll" /> <file name="msvcp90.dll" /> <file name="msvcm90.dll" />
</assembly>
注意清单文件中的那个版本号9.0.21022.8必须要和你的exe或dll所依赖的版本号一致,否则exe是无法加载的。
方案学习自winamp
|