vc 2008打完sp1后manifest文件生成错误

用vc 2008写了一个很简单的程序,然后扔到另外一台机器上去运行。那台机器并没有装vc,也没有vc9的crt runtime。我希望这个小程序是免安装的,直接扔过去就可以用的。于是我就把Microsoft.VC90.DebugCRT这个目录和我的程序一起打包发过去。遗憾的是,不行。然后用sxstrace工具查,发现是这样,我的程序的manifest的CRT那一节里面写的是version="9.0.21022.8",而我系统里装的是打过补丁的,version="9.0.30729.4148"。然后到了目标机器上,它没有安装vc9的CRT,当前目录下的这个版本又不一致(比它要求的高),于是它就报错了。

最好终于在网上找到解决办法,我给我的程序加上_BIND_TO_CURRENT_VCLIBS_VERSION 这个宏。然后再重新编译,这样,manifest文件就是用系统里当前安装的版本号了。然后把vc目录下的redist里面的文件夹和我的程序一起打包扔出去,就没有问题了。

真恶心。

据说vs 2010就没这个问题了。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥