52

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

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

4

7 回答 7

45

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

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

于 2009-10-15T19:13:24.220 回答
27

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

于 2014-06-13T22:59:37.993 回答
7

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

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

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

于 2013-06-12T18:28:06.627 回答
1

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

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

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

项目属性->配置属性->C/C++->常规->调试信息格式,设置为'Program Database(/Zi)';

于 2018-03-13T20:24:09.703 回答
0

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

鲍勃。

于 2009-10-15T19:20:13.820 回答
0

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

于 2019-10-15T17:23:25.767 回答
0

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

于 2021-04-04T10:40:40.127 回答