修复VS2017 LNK1104 无法打开库文件错误之宏错误
1.问题描述:
使用Visual Studio 2017创建C++默认工程项目,编译报错,提示 LNK1104: 无法打开文件"MSVCRTD.lib"。
2.问题分析:
对比其他电脑程序环境,项目-属性-属性页-VC++目录:库目录,发现系统宏 $(VC_LibraryPath_x86) 有错误,部分路径不存在。错误路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\lib\Spectre\x86;... 正确路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\lib\x86; ... 错误的路径中都多了 "Spectre\"。
.
3.解决方法:
可以手动添加正确路径,或修正系统宏 $(VC_LibraryPath_x86) 设置。着重说明如何修正系统宏,经常繁杂搜索后,确定是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props 文件有错误,定位到行 “<VCLibDirMod Condition="'$(VCLibDirMod)' != 'true' and '$(SpectreMitigation)' == 'Spectre'">Spectre\</VCLibDirMod>” ,删去"Spectre\"即可。至于为何会发生如此错误,不得而知。
4.本文目的:
每个人遇到的问题大多数都是特定的,不可能尽相同,本文旨在告诉读者如果遇到此类错误或需要自定义VS系统宏时应如何进行,系统下有数百个 .props 属性设置文件,可使用 Everything、UltraEdit 工具,根据路径、文件名称、目标字符串等特征去搜索。
请注意,大多数宏都是多层嵌套的,甄别时有较大难度,建议修改验证时做好备份。
5.结果:
宏 $(VC_LibraryPath_x86) 内容修正后,编译成功。
- VS2017提示 LNK1104 无法打开文件 kernel32.lib
- 编译错误LNK1104:无法打开文件“XXX.LIB”
- 错误 LNK1104 无法打开文件“opencv_calib3d2410d.lib” 关于在Visual Studio下的opencv3编译解决方法;
- 错误 4 error LNK1104: 无法打开文件“libboost_date_time-vc120-mt-sgd-1_64.lib”
- vs2010:LNK1104无法打开.exe文件错误
- error LNK1104: 无法打开文件 ***.exe的错误
- VS2017出现LNK1104 无法打开文件gdi32.lib问题解决方法
- error LNK1104: 无法打开文件“libSpine.lib”
- error LNK1104: 无法打开文件“OPENNI2_LIB.obj”
- vs2012项目:LINK : fatal error LNK1104: 无法打开文件“E:\Debug.obj”
- LNK1104 无法打开文件“VKstatic.1.lib”
- LNK1104: 无法打开文件“glut32.lib”的原因之一
- 链接器工具错误 LNK1104:无法打开".exe"
- LNK1104 无法打开文件 C:/Program.obj
- 解决:关于VS2017其他工程使用ZeroMQ编译后的文件,出现无法打开文件“xxx.lib”错误
- windows 7 lnk文件打开方式错误的修复
- error: LNK1104: 无法打开文件“glw32.lib”
- vs2010打不开vs2017的.sln文件,出现错误提示 “选择的文件是解决方案文件 但是用此应用程序的较新版本创建的,无法打开”
- 链接器工具错误 "LNK2026 XXX模块对于 SAFESEH 映像是不安全的" LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
- 打开pdf出现文件损坏并且无法修复错误解决