在VS 2005中建立的Win32工程总出现这样的运行错误:"MSVCR80D.dll not found"
好几次了,总结各种解决方法如下:

     原因:(不知道在说啥)由于VS.net 2005 采用了一种新的DLL方案,搞成一个exe还要配有一个manifest文件(一般在嵌入文件里了,所以看不到,不过也可以不嵌入,这样会生产一个<程序名>.exe.manifest的文件,没它exe自己就转不了了:)这是个新功能,微软弄了个新工具(mt.exe),结果不好用,好像是fat32下时间戳有问题(在ntfs下这个问题就没有了),搞得manifest有时嵌入不到exe中(默认配置是嵌入的,所以就报错找不到dll了。

      解决方法:(任选一个即可)
1.生成Debug版本项目时,未打开连接器的/MANIFEST开关。在'Project Properties->Configuration Properties->Mainfest Tool->Input and Output->Embed Manifest' 将 YES 改成 NO 就可以了.

2.在“属性->配置属性->清单工具->常规“下有一个”使用FAT32解决办法,把它选成是,就可以了。

3、如果建立的是Win32的项目的话可以在项目-(项目名)属性-配置属性-C/C++-代码生成-运行时库 将其改为多线程调试 /MTd

4、在C:\Program Files\Microsoft Visual Studio 8\VC\redi
st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest

把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。

5、将Debug版本中第一次生成的.res文件删除后重新Build一次

6、采用Release模式,不要采用Debug模式就可以了

6.  此法太复杂,懒得试拉.

posted on 2007-03-21 23:23 哈哈 阅读(4285) 评论(3)  编辑 收藏 引用

评论:
# re: MSVCR80D.dll not found 2007-05-29 16:34 | 西井
没那么复杂,只要把下面的改成否就行了
项目属性->配置属性->清单工具->输入和输出->嵌入清单  回复  更多评论
  
# re: MSVCR80D.dll not found 2008-09-21 12:17 | song
感谢!  回复  更多评论
  
# re: MSVCR80D.dll not found 2008-12-03 12:23 | g_cofa
谢谢了,也遇到了这个问题了。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理