解决VS2005找不到MSVCR80D.DLL文件的问题

4 views
Skip to first unread message

yunc...@gmail.com

unread,
Mar 29, 2007, 6:09:26 AM3/29/07
to You Must Not Fail !
今天下午,在VS2005下编译一个新建项目的时候,突然报出"没有找到MSVCR80D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会
修复此问题"的错误。心顿时沉下一截,前两天中了一个小病毒,我的确有打算重装系统,但不是现在。于是乎上网寻找解决方案,找到一个比较不错的方案。但
由于其中有个错误,造成不起效果。尝试着排除错误后能比较好的解决该问题,特记录下来。

闲话说完,就此开始。

首先,只需要手工修改两个文件就可以排除该问题。这两个文件都在$VSInstallDir目录下
(以我为例,$VSInstallDir = F:\Visual Studio\)
$VSInstallDir\VC\VCWizards\AppWiz\Generic\Application\html
\2052\AppSettings.htm
$VSInstallDir\VC\VCWizards\AppWiz\Generic\Application\scripts
\2052\default.js

提示:这两个文件修改前最好备份一下。
1.首先打开AppSettings.htm文件,找到"<LABEL FOR="SUPPORT_MFC"
ID="SUPPORT_MFC_LABEL">MFC(<U>M</U>)</LABEL>"行,隔两行输入以下内容:

<!-- this section is added by YUN. -->
<br />
选择你所使用的文件系统:
<INPUT TYPE="radio" CLASS="Radio" checked onPropertyChange=""
NAME="filesystem" ID="FAT32" ACCESSKEY="F" TITLE="FAT32">FAT32(F)</
INPUT>
<INPUT TYPE="radio" CLASS="Radio" onPropertyChange=""
NAME="filesystem" ID="NTFS" ACCESSKEY="N" TITLE="NTFS">NTFS(N)</INPUT>
<!-- end of section -->

保存文件,第一个文件修改完成。

2.接着打开default.js,在找到"var bATL = wizard.FindSymbol("SUPPORT_ATL");",在该行后
输入以下内容:

// this section is added by YUN.
var bFAT32 = wizard.FindSymbol("FAT32");
// end of section

接着往下寻找"config = proj.Object.Configurations.Item("Release");",在该行之前(注意是之
前),输入以下内容:

// this section is added by YUN.
if(bFAT32)
{
var MFTool = config.Tools("VCManifestTool");
MFTool.UseFAT32Workaround = true;
}
// end of section
保存文件,所有修改完成。

接着打开VS2005,新建项目时就会发现新建项目页面的不同。

最后提一下导致这个问题的原因,是由于VS2005采用了一种新的DLL方案,变成了一个EXE还要搭一个manifest文件(一般在嵌入文件里了,
所以看不到,不过也可以不嵌入,这样会生产一个 <程序名>.exe.manifest的文件,没它EXE就转不了)为了这个新功能,微软还配套提供了
一个新工具mt.exe,但是却在FAT32下会出现时间戳问题(NTFS没事),会造成manifest嵌入不到EXE中,这还不算最糟糕。最糟糕的
是默认配置是嵌入的,于是乎就报错找不到MSVCR80D.DLL文件。

该方法还有一个官方的解决方法,"属性->配置属性->清单工具->常规" 选择"使用FAT32解决办法"为是。

但是重复工作是邪恶的,因此特花费半小时记下该技巧,希望能方便他人。

Reply all
Reply to author
Forward
0 new messages