警告 LNK4075:由于“/INCRMENTAL:NO”规范而忽略“/EDITANDCONTINUE”

问题描述 投票:0回答:2

我有一个链接到外部 .lib (libprotobuf.lib) 的项目。当我在发行版中编译时,没有任何警告。当我在调试中编译时,我收到此警告:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
File: \libprotobuf.lib(message_lite.obj)

我一直在研究这个问题,从这个问题开始。我一直在调整我的项目选项,并且我(在调试配置中):

/Zi - 所以编辑并继续不应该打开。

/增量 - 所以增量应该打开。

有什么想法为什么我仍然收到此警告吗?我最好的猜测是外部库是使用 /ZI 构建的...但我不明白为什么如果我打开 /INCRMENTAL 会出现问题。预先感谢您的帮助!

更新:我能够使用 /Zi 选项而不是 /ZI... 重建外部库,这解决了我的问题,但如果有人能告诉我原因,我将不胜感激。为什么在我原来的项目中,打开 /INCRMENTAL 后,警告仍然按给定的方式显示?谢谢!

c++ linker warnings
2个回答
0
投票

OP 将修复作为更新发布。我可以确认这是解决方案,因为我遇到了同样的问题并按照建议进行了修复。问题出在 consumed 库中,而不是在错误标识的项目中。消耗的库必须构建而不/ZI(上i),而/Zi(下i)似乎是一个不错的选择。

错误的令人困惑的方面是上下文项目有 /INCRMENTAL (这似乎与 /INCRMENTAL:NO 相反)和 /Zi (这似乎不是 editand continue )。因此,错误消息似乎是错误的。但是,文件上下文是问题出在所使用的库中的线索。

确认一下,错误上下文是:

  • 项目:消耗项目
  • 文件:消耗的lib文件(一些.obj文件)

-1
投票

我认为这非常简单。 /Zi 选项依赖于 /INCRMENTAL,如果您将其关闭,编译器会发出警告。 (您提到的警告是在编译外部库时,根据错误消息)。所以警告是关于外部库的配置问题。

© www.soinside.com 2019 - 2024. All rights reserved.