将v120 C++项目重定向到v140后出现LNK1117错误,求解决办法
解决VS项目从v120迁移到v140后LNK1117: syntax error in option 'LTCG:incremental'错误
问题背景
将基于VS2013(v120)工具集的C++项目迁移到VS2015(v140)后,构建时触发链接错误:LINK : fatal error LNK1117: syntax error in option 'LTCG:incremental',原因是v140版本的Microsoft.Build.CppTasks.Common.dll会默认添加无效的/LTCG:incremental参数,而v140链接器已不再支持该语法。
解决办法
1. 修改项目链接器属性(最直接)
- 右键项目 → 属性,打开项目属性页
- 导航到链接器 → 优化,找到链接时间代码生成选项:
- 若不需要增量链接时间代码生成,直接选择
不使用链接时间代码生成 - 若需要LTCG,选择
使用链接时间代码生成(对应参数/LTCG,不带:incremental后缀)
- 若不需要增量链接时间代码生成,直接选择
- 切换到链接器 → 命令行,在其他选项里检查是否残留
/LTCG:incremental,如果有直接删除 - 点击确定后重新构建项目
2. 手动编辑vcxproj配置文件(属性页修改无效时用)
- 右键项目 → 卸载项目,再次右键项目 → 编辑[项目名].vcxproj
- 在XML文件中查找所有包含
LinkTimeCodeGeneration的节点:- 若原配置为
<LinkTimeCodeGeneration>Incremental</LinkTimeCodeGeneration>,将其修改为<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>(启用标准LTCG) - 若不需要LTCG,直接改为
<LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>
- 若原配置为
- 保存文件,右键项目 → 重新加载项目,再尝试构建
3. 清理缓存后重新构建
- 删除项目目录下的
obj、bin文件夹 - 打开VS对应的开发者命令提示符,运行以下命令清理项目:
(注意替换msbuild /t:Clean /p:Configuration=Release,Platform=x64Release和x64为你的项目实际配置和平台) - 之后重新构建项目
内容的提问来源于stack exchange,提问作者Ankitha Pilli
相关产品推荐
相关产品推荐

