提问人:TheBlueRage 提问时间:1/4/2014 最后编辑:CommunityTheBlueRage 更新时间:9/25/2023 访问量:11386
警告LNK4075:由于“/INCREMENTAL:NO”规范而忽略“/EDITANDCONTINUE”
Warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
问:
我有一个链接到外部 .lib (libprotobuf.lib) 的项目。当我在发布中编译时,没有警告。但是,当我在调试中编译时,我收到以下警告:
warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
File: \libprotobuf.lib(message_lite.obj)
我一直在研究这个问题,从这个问题开始。我一直在调整我的项目选项,并且我有(在调试配置中):
/Zi - 所以编辑并继续不应该打开。
/INCREMENTAL - 因此增量应该处于打开状态。
知道为什么我仍然收到此警告吗?我最好的猜测是外部库是在 /ZI 上构建的......但我不明白为什么如果我打开了 /INCREMENTAL,它会有问题。提前感谢您的帮助!
更新:我能够使用 /Zi 选项而不是 /ZI 重建外部库......这解决了我的问题,但如果有人能告诉我原因,我将不胜感激。为什么在我的原始项目中,当 /INCREMENTAL 打开时,警告仍然显示为给定的?谢谢!
答:
我认为这很简单。/Zi 选项依赖于 /INCREMENTAL,如果将其关闭,编译器会发出警告。(您提到的警告是当它编译外部库时,根据错误消息)。因此,警告是关于外部库的配置问题。
评论
OP 将修复程序作为更新发布。我可以确认这是修复程序,因为我遇到了同样的问题并按照建议进行了修复。问题出在使用的库中,而不是在错误标识的项目中。消耗的 lib 必须在没有 /ZI(上 i)的情况下构建,而 /Zi(下 i)似乎是一个不错的选择。
该错误的令人困惑的方面是上下文项目具有 /INCREMENTAL(似乎与 /INCREMENTAL:NO 相反)和 /Zi(似乎不是 editandcontinue)。因此,错误消息似乎是错误的。但是,文件上下文是问题出在使用的库中的线索。
要确认,错误上下文为:
- 项目:消耗项目
- 文件:消耗的 lib 文件(一些 .obj 文件)
评论