VS2008下编译问题:缺少dll文件的处理方法。
2010-07-26 11:01
447 查看
int main()
{
cout<<"第一个程序/n";
return 0;
}
运行后却出现了。。
'第一个程序.exe': Loaded 'D:/Backup/我的文档/Visual Studio 2005/Projects/第一个程序/debug/第一个程序.exe', Symbols loaded.
'第一个程序.exe': Loaded 'C:/WINDOWS/system32/ntdll.dll', No symbols loaded.
'第一个程序.exe': Loaded 'C:/WINDOWS/system32/kernel32.dll', No symbols loaded.
Debugger:: An unhandled non-continuable STATUS_DLL_NOT_FOUND exception was thrown during process load
The program '[184] 第一个程序.exe: Native' has exited with code -1073741515 (0xc0000135).
提示错误:没有找到MSVCP80D.dll导致程序无法启动。
问题补充:
我是按Ctrl+F5
运行后提示:没有找到MSVCP80D.dll因此这个应用程序未能启动。 说的尽量的清楚点,我用的是英文版的该怎么操作?
提问者: 195698089 - 一级
最佳答案
此问题的原因是由于VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该 exe文件运行时没有相应的清单文件而运行失败并提示如上错误。而在NTFS文件系统中则不会出现上面的问题。
比较好的解决方案有两个:
1.在项目的“属性|配置属性|清单工具|常规”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解决问题。如下图所示: (图略)
2.不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。
英文版的也是一样的。。。。
{
cout<<"第一个程序/n";
return 0;
}
运行后却出现了。。
'第一个程序.exe': Loaded 'D:/Backup/我的文档/Visual Studio 2005/Projects/第一个程序/debug/第一个程序.exe', Symbols loaded.
'第一个程序.exe': Loaded 'C:/WINDOWS/system32/ntdll.dll', No symbols loaded.
'第一个程序.exe': Loaded 'C:/WINDOWS/system32/kernel32.dll', No symbols loaded.
Debugger:: An unhandled non-continuable STATUS_DLL_NOT_FOUND exception was thrown during process load
The program '[184] 第一个程序.exe: Native' has exited with code -1073741515 (0xc0000135).
提示错误:没有找到MSVCP80D.dll导致程序无法启动。
问题补充:
我是按Ctrl+F5
运行后提示:没有找到MSVCP80D.dll因此这个应用程序未能启动。 说的尽量的清楚点,我用的是英文版的该怎么操作?
提问者: 195698089 - 一级
最佳答案
此问题的原因是由于VS 2005在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该 exe文件运行时没有相应的清单文件而运行失败并提示如上错误。而在NTFS文件系统中则不会出现上面的问题。
比较好的解决方案有两个:
1.在项目的“属性|配置属性|清单工具|常规”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解决问题。如下图所示: (图略)
2.不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。
英文版的也是一样的。。。。
相关文章推荐
- 一个VC6的工程转换为VS2008的工程后,编译找不到而且不能升级vc90.pdb文件的问题解决方法 2010-9-28 14:00
- MySQL问题贴3:Delphi第一次编译连接MySQl数据时缺少dll文件的解决办法
- VS2008资源视图打不开,编译提示 error PRJ0003 : 生成“mt.exe”出错rc.dll,rcdll.dll,mt.dll等问题的解决方法
- VS2008将页面后台文件编译为一个DLL
- Capture CIS提示缺少msvcr90.dll文件无法启动问题解决方法
- win7系统玩游戏提示缺少steam_api.dll文件的故障原因及解决方法
- 游戏软件提示dll丢失、缺少dll等解决方法及dll文件大合集
- maven常见问题处理(3-3)Gradle编译时下载依赖失败解决方法
- C# 编译生成dll文件供程序调用的两种方法
- VS2008编译找不到且不能升级vc90.pdb文件解决方法
- Spring学习-11:配置文件引入的问题(配置文件过于庞大,不便于修改的处理方法)
- VS2008编译问题解决方法
- Hadoop处理大量小文件的问题和解决方法
- 编译ffmpeg文件遇到的问题以及解决方法
- Hadoop关于处理大量小文件的问题和解决方法
- vs2008中如何更好的使用 .dll文件 / vs2008找不到 .dll问题
- Hadoop关于处理大量小文件的问题和解决方法
- SpringBoot项目打包后,找不到文件路径问题,处理方法
- exosip在vs2008下编译问题解决方法
- 问题-Delphi编译时提示缺少delphi自己的单元文件