1.问题描述:

使用Visual Studio 2017创建C++默认工程项目,编译报错,提示 LNK1104: 无法打开文件"MSVCRTD.lib"。

修复VS2017 LNK1104 无法打开库文件错误之宏错误_第1张图片


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\"。

修复VS2017 LNK1104 无法打开库文件错误之宏错误_第2张图片.

3.解决方法:

可以手动添加正确路径,或修正系统宏 $(VC_LibraryPath_x86)  设置。着重说明如何修正系统宏,经常繁杂搜索后,确定是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props 文件有错误,定位到行 “Spectre\” ,删去"Spectre\"即可。至于为何会发生如此错误,不得而知。

img_201922-224340_15.png

4.本文目的:

每个人遇到的问题大多数都是特定的,不可能尽相同,本文旨在告诉读者如果遇到此类错误或需要自定义VS系统宏时应如何进行,系统下有数百个 .props 属性设置文件,可使用 Everything、UltraEdit 工具,根据路径、文件名称、目标字符串等特征去搜索。

请注意,大多数宏都是多层嵌套的,甄别时有较大难度,建议修改验证时做好备份。

5.结果:

宏 $(VC_LibraryPath_x86)  内容修正后,编译成功。

修复VS2017 LNK1104 无法打开库文件错误之宏错误_第3张图片