VS2019切换平台工具集编译Win32项目报错LNK1104找不到mfc140d.lib如何解决
报错原因
- 核心原因是项目配置中开启了MFC引用,和代码有没有用到MFC无关:切换平台工具集时,原有VS2015的配置残留了「使用MFC」的选项,哪怕没有编写MFC相关代码,链接器也会按照配置要求加载MFC相关库。
- mfc140d.lib是VS2015(v140工具集)对应的MFC调试版本库,切换到VS2019(v142工具集)后,环境大概率没有安装VS2015版本的MFC组件,所以直接提示找不到该文件。
- 仅忽略单个mfc140d.lib无法解决问题:MFC依赖一系列关联库,单独忽略一个会触发后续其他MFC库的缺失报错。
- 该问题和安装的两个Nuget包无关,所以卸载后报错仍然存在。
解决步骤
- 第一步:关闭MFC引用配置。右键项目 → 选择「属性」→ 依次进入「配置属性」→「常规」,找到MFC的使用选项,将默认值改为使用标准Windows库,该配置会告诉链接器不需要加载任何MFC相关库。
- 第二步:清理无效链接器配置。进入「配置属性」→「链接器」→「输入」,删除之前手动添加的
mfc140d.lib忽略规则,同时检查「附加依赖项」中是否有手动添加的其他MFC相关lib,全部删除。 - 第三步:清除项目缓存。删除项目根目录下的
Debug、Release文件夹,以及隐藏的.vs文件夹,避免旧的中间编译文件残留之前的配置。 - 第四步:重新生成项目即可。如果还有报错,检查头文件(包括预编译头文件
stdafx.h/pch.h)中是否引入了afxwin.h这类MFC专属头,删除对应引用即可。
内容的提问来源于stack exchange,提问作者user2274060
相关产品推荐
相关产品推荐

