网上有很多解决VS2005/2008的发布时,如何带上运行时库的问题,但是就算你按着网上的说法按部就班的做的话,也一定能够成功。
我在发布软件的时候,也遇到这样的问题,我是这样解决的:
1、首先了解VS2005/2008的运行时库加载机制:这是别人收集的资料
2、了解了运行时库加载机制后,我把我拥VS编译的所有DLL和EXE都编译成不嵌入清单的文件
3、打开DLL或者EXE的.manifest文件(记事本打开就可以了),查看依赖库,这时你有可能发现它不但依赖你现在用的IDE的运行时库,有可能还依赖以前IDE的运行时库:
如:我用VS2008编译的DLL,就依赖了VS2005的运行时,这和你的有些第三方库使用以前的IDE编译的有关,没关系,你只需删除这些依赖就可以了
4、把所有依赖以前的运行时库的配置从.manifest删除,然后使用现在的运行时库的拷贝到程序目录下,比如:将Microsoft.VC90.CRT的库文件夹,拷贝的程序目录下,
这里要保证.manifest文件里的版本和Microsoft.VC90.CRT文件夹下的库的版本一致。
5、这样就OK了,可以找台干净的XP系统调试下,VISTA/WIN7是不存在这个问题的。
具体例子,你可以下载Goto 桌面搜素,它就是这样配置的。
截图: