【问题标题】:LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specificationLNK4075:由于“/OPT:ICF”规范而忽略“/EDITANDCONTINUE”
【发布时间】:2010-12-07 03:48:00
【问题描述】:

我最近将一个多项目 Visual Studio 解决方案转换为对每个项目使用 .dll 而不是 .libs。但是,我现在收到示例中所述的每个项目的链接器警告。 MSDN 对此并没有太大帮助。为什么会这样,我该如何解决?

警告 2 警告 LNK4075:忽略 '/EDITANDCONTINUE' 由于'/OPT:ICF' 规范 LudoCamera.obj

【问题讨论】:

  • 为什么是链接器错误?我相信你,我只是缺乏 C++ 和 Visual Studio 的经验。从 ZI(程序数据库编辑并继续)切换到 Zi(程序数据库)使这些错误消失,但它可能只是隐藏了根本问题。你能详细说明一下吗?
  • @Mark 实际上有三个编译阶段,(1) 解析 - 理解每个 cpp 文件的内容,(2) 代码生成 - 为每个函数文件生成操作码,以及 (3) 链接 - 链接每个函数的操作码一起。此警告以 LNK 开头,表示这是一个链接器错误。
  • 当没有“/EDITANDCONTINUE”选项时,它仍然显示“忽略/EDITANDCONTINUE”,这是一种很好的感觉。
  • @GlennMaynard 这是一个内部 Microsoft Visual Studio 标志,在使用其他标志时启用。

标签: c++ visual-studio dll linker linker-warning


【解决方案1】:

您可以拥有“编辑并继续”支持或优化。通常,您将“编辑并继续”放在调试版本上,将优化放在发布版本上。

编辑并继续允许您在调试时更改代码并保持程序运行。如果代码还需要优化,则不支持。

【讨论】:

  • 我可以通过特定的标志吗?我已经通过\Zi,但仍然收到此警告。
  • 这是/,而不是`\`。此外,请确保您在尝试构建的构建(DEBUG 或 RELEASE)中选择了它
【解决方案2】:

我也有这个问题。我打开项目属性,然后单击 C/C++ 选项卡中的常规。 有一个选项显示“调试信息格式”,我将其更改为程序数据库 (/Zi),但我不再收到警告。

【讨论】:

  • 您可能需要对链接到的项目执行此操作,而不仅仅是出现警告的项目。
【解决方案3】:

在将 VS2008 项目从 .lib 转换为 .dll 时,我也收到此警告,解决方法是将调试 Win32 配置上的链接器/优化设置从默认更改为:

引用 = 保留未引用的数据 (/OPT:NOREF)

启用 COMDAT 折叠 = 不删除冗余 COMDAT (/OPT:NOICF)

【讨论】:

    【解决方案4】:

    您应该将两个项目的“调试信息格式”设置为“程序数据库(/Zi)”。例如。如果警告是:

    警告 LNK4075:由于“/OPT:ICF”规范 D:\mypath\project1\project1.obj project2 而忽略“/EDITANDCONTINUE”

    然后在 project1 和项目的属性中。将它们设置为:

    project properties->Configuration Properties->C/C++->General->Debug Information Format,设置为‘Program Database(/Zi)’;

    【讨论】:

      【解决方案5】:

      我知道它是什么,它们的 dll 不是发布版本。我认为链接器仍然认为它们是调试版本,它们仍然具有调试仍然打开时使用的调试编辑和继续功能。

      鲍勃。

      【讨论】:

      • 我在调试项目中导入了一个为发布而编译的库,并出现了警告。确实是这样。
      【解决方案6】:

      我们必须在项目属性的 Linker->Debugging 窗格下将“Generate Debug Info”设置为“Yes (/DEBUG)”。不知道一开始是如何为调试版本设置的,或者为什么这不是默认设置,但你去了。 (VS2010,以防万一。)

      【讨论】:

        【解决方案7】:

        如果您不小心将调试目录添加到您的发布版本中,也会出现此错误。检查链接器->常规->附加库目录。为我工作。

        【讨论】:

          猜你喜欢
          • 2013-08-24
          • 2014-01-21
          • 1970-01-01
          • 1970-01-01
          • 2022-12-07
          • 2012-07-04
          • 1970-01-01
          • 2014-02-17
          • 2015-08-20
          相关资源
          最近更新 更多