VS 2005/VS 2008在生成可执行文件时使用了一种新的技术,该技术生成的可执行文件会伴随生成一个清单文件(manifest file)(.manifest后缀文件)(其本质上是XML文档,你可以用文本编辑器打开看看),并在链接完成后将该清单文件嵌入到exe文件中(默认情况下)。而在FAT32文件系统中,在处理清单文件阶段,当增量链接时不能完成清单文件的更新(默认情况下),于是造成清单文件嵌入失败,从而使该exe文件运行时没有相应的清单文件而运行失败并提示如上错误。

解决方案很多,列举如下:

1. 由于这是在链接动态运行库出现的问题,所以你可以选择代码生成的连接方式为 /MTd 而非 /MDd ,不用这些DLL文件从而避免问题的出现。该方法有一个很显然的缺点:适用范围有限,不推荐该方法。

注:/MT /MTD MD /MDD 之间的关系可以参见 VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结;另外如果使用/MT 或者/MTD 那么生成的文件的尺寸基本上是使用/MD 或者/MDD的10倍大小

2. 既然跟FAT32系统有关,那么我们可以选择在NTFS文件系统中开发从而避免该问题,此方法同上,也是采用的回避问题的方式,不提倡。(我个人推荐使用这种方法)

3. 该方法仍与FAT32有关:在项目的“属性|配置属性|清单工具|常规(Project | Game Properties | Configuration Properties | C/C++ | Code Generation | Runtime Library)”中的“使用FAT32解决办法”选择“是”(默认为“否”),重新生成项目即可解决问题。该方法是唯一真正针对问题所在而提出的解决方法,使清单工具可以正确更新。(此方法是官方解决方法,也比较方便,推荐)

4. 既然问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:

(1)不启用增量链接。在项目的“属性|配置属性|链接器|常规”中的“启用增量链接”选择“否”。此方法阻断了问题产生的源头,其每次生成exe文件时都直接嵌入清单文件,而不是默认的根据时戳而决定是否更新清单文件。

(2)不嵌入清单文件。在项目的“属性|配置属性|清单工具|输入和输出”中的“嵌入清单”选择“否”,从而在生成exe文件时附随生成一个清单文件(默认情况下,其文件名为exe文件的全名加上“.manifest”),避免了嵌入清单文件可能失败的问题。在程序运行时,会用到该清单文件。显然,这种方式使可执行程序产生了更多的外部依赖,不推荐。

另外,还有一个不能称为方法的土办法:每次Build前手动删除*.ilk文件(增量链接文件)(当然可以在项目属性中写入删除命令,使其自动执行),不推荐该土办法。

最后,总结一下:

1. 此问题只在特定条件下才会出现:在FAT32文件系统中编译、默认设置(增量模式、不启用FAT32解决方案、嵌入清单文件)、非第一次生成可执行文件文件(即在增量连接、更新清单文件时)。(注意)

2. 解决方案1和4.1方便实用,推荐使用。

ps:我个人认为解决这个问题的最好方法就是使用vc2005/vc2008的时候,在ntfs文件系统上进行开发(也就是第2种方法)。当前的绝大多数软件在ntfs文件系统都能够正常的运行(即便是dos类的工具也能在ntfs文件系统上良好的运行),为什么还要死抱着fat/fat32文件系统不放呢?

另外要注意一个概念问题,“VC2008下提示找不到MSVCP90D.dll”这是属于开发问题,是由于windows文件系统的bug(fat32的bug),导致vc2005/vc2008开发工具编译出来的程序不能正常的运行。

来源http://alone-dancer-sohu-com.javaeye.com/blog/418743

我用第三种方法解决了。

转载于:https://www.cnblogs.com/yssongest/p/3406801.html

VS找不到MFC90d.dll错误相关推荐

  1. VS2008找不到MFC90d.dll错误解决方法

    问题是在更新嵌入的清单文件时发生的,由于FAT32的原因而未能更新嵌入的清单文件,于是我们有如下两种解决方法:   (1)不启用增量链接.在项目的 "属性|配置属性|链接器|常规" ...

  2. VB出现“找不到DAO350.DLL”错误

    前两天打开VB,突然就蹦出来错误了,我也没有动它呀,错误是"找不到DAO350.DLL文件" 为什么会出现这个问题呢?可能是你卸载软件时,误删了共享的DLL文件. 百度说是从网上重 ...

  3. 找不到 vcomp100.dll错误的解决

    作者:朱金灿 来源:https://blog.csdn.net/clever101 安装完一个软件,运行时出现一个错误: 经过查找,发现VCOMP100.DLL是vs2010注册运行时库里的一个文件. ...

  4. MySQL 安装报找不到MSVCR120.dll错误

    报错 当安装MySQL被提示msvcr120.dll缺少,或者类似的.dll缺少,均是系统缺少VC++运行库导致的. 解决方案 msvcr120.dll缺少是由于系统中缺少Visual Studio ...

  5. 关于找不到mfc120u.dll文件错误与0xc000007b错误的解决方案

    项目场景: 基于VisionMaster 4.1.0 SDK的二次开发 开发工具Visual Studio 2017 问题描述 打不开C:\ProgramFiles\VisionMaster4.1.0 ...

  6. J-Link在keil软件找不到芯片 与 软件提示dll错误

    碰到这种情况 1参考这个链接关于在KEIL下使用j-link读不到芯片的问题_̋(๑˃́ꇴ˂̀๑)̋的博客-CSDN博客 我用了上面的方法 还是不行,后面我在网上找了"SEGGER" ...

  7. apache常见错误:VC运行库(找不到 VCRUNTIME140.dll)

    1. 安装apache为系统服务时报错:找不到 VCRUNTIME140.dll 解决方案:安装 VC2015 2. 下载并安装 VC2015 运行库, 运行 VC_redist.x64.exe 无脑 ...

  8. Xamarin.Android编译提示找不到mscorlib.dll.so文件

    Xamarin.Android编译提示找不到mscorlib.dll.so文件 错误信息:AOT module 'mscorlib.dll.so' not found: Cannot load lib ...

  9. 找不到MSVCR100.DLL解决办法

    在windows 7- 64 bits 上使用Kinect, 启动NiViewer时, 出现找不到MSVCR100.DLL的错误,解决方案如下: 下载MSVCR100.DLL,点击下载安装即可. 转载 ...

最新文章

  1. svg animation应用之-描边效果
  2. 4G内存服务器的MySQL配置优化
  3. java_Socket简单使用方法
  4. windows2003下防火墙ISA大型实验
  5. qt中生成含有中文的json文件和解析json文件
  6. TCP/IP协议模型和OSI协议模型的概念
  7. Python collections系列
  8. VS Code 调试ROS节点
  9. 欧姆龙编程软件(CXONE)使用教程
  10. 超定方程组及其求解方法
  11. 实现折叠工具栏CollapsingToolbarLayout(折叠工具栏布局)
  12. 使用 apifm 插件进行 Flutter 云开发——QQ一键登录/注册
  13. waiting for changelog lock.
  14. 横杠转义(正则表达)
  15. 哈工大2022年大作业——程序人生
  16. _signature、X-Bogus、msToken调试分析【2022.7.21】
  17. ubuntu安装后卸载预装软件
  18. 在Excel中添加数据分析工具
  19. uniapp刘海屏适配
  20. js点击成全屏,再点击或者ESC退出全屏

热门文章

  1. 小米6报价参数_对小米11系列你了解多少,你更看好小米11还是小米11pro
  2. c性能大容量cket_5千左右预算,既轻薄(高颜值)又高性能的笔记本推荐(畅玩LOL、CF、DNF、流放之路、梦幻西游)...
  3. type python django models_Django 模型
  4. python自带的shell、其性能优于ipython吗_根据强化的性质和目的可以分成()。 A.自然强化物和人为的近似强化物B.积极强化和消极...
  5. python50种算法_一文洞悉Python必备50种算法
  6. html创建表单用设么,如何使用HTML创建表单的发送
  7. 汉子拼音不认识缤纷_儿童学拼音app哪个最好
  8. Effective C++读书笔记 第1章
  9. 《Android测试的学习笔记》——Introduction
  10. NumPy中如何确定两个ndarray数组完全相同