在软件开发的过程中,有时候我们需要把编译的debug版应用程序复制到开发环境以外的PC上运行测试。通常只需要把编译出exe文件和依赖的DLL复制到测试PC上即可。但是当我把win7系统上使用vs2008 SP1编译出的mfc程序复制到xp上进行测试时,却出现了这样的错误(图1):
这是怎么回事儿呢?如果说是因为缺少依赖的dll,通常情况下应该出现这样的错误(图2)才对。
如果不是dll的原因,那究竟是什么造成图1所示的错误呢?
这是因为微软在VS2005以后采用了新的程序部署技术--manifest清单文件。这种技术使得不同版本VS开发的应用程序可以在同一个操作系统中运行。例如,程序A运行时需要版本号为9.0.21022.8的mfc90ud.dll,程序B运行时需要版本号为9.0.30729.6161的mfc90ud.dll,如果安装A时将mfc90ud.dll复制到了系统目录中,之后安装B程序时使用同名的mfc90ud.dll覆盖了之前的文件&#x