Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ LNK4075:忽略'/编辑并继续';由于'/选择:ICF';规范_C++_Visual Studio_Dll_Linker_Linker Warning - Fatal编程技术网

C++ LNK4075:忽略'/编辑并继续';由于'/选择:ICF';规范

C++ LNK4075:忽略'/编辑并继续';由于'/选择:ICF';规范,c++,visual-studio,dll,linker,linker-warning,C++,Visual Studio,Dll,Linker,Linker Warning,我最近将一个多项目Visual Studio解决方案转换为对每个项目使用.dll而不是.libs。然而,我现在得到一个链接器警告,如示例中所述。MSDN在这方面并没有提供太多帮助。这是为什么?我如何解决 警告2警告LNK4075:忽略 “/EDITANDCONTINUE”由于“/OPT:ICF” 规范LudoCamera.obj 您可以拥有“编辑并继续”支持或优化。通常,您会在调试版本中设置“编辑并继续”,并在发布版本中设置优化 “编辑并继续”允许您在调试时更改代码,并保持程序运行。如果代码还需

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

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

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


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

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


鲍勃

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

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


Enable COMDAT Folding=不要删除冗余COMDAT(/OPT:NOICF)

我也有这个问题。我打开项目属性,然后单击C/C++选项卡中的“常规”。
有一个选项显示“Debug Information Format”,我将其更改为Program Database(/Zi),不再收到警告

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

警告LNK4075:由于'/OPT:ICF'规范D:\mypath\project1\project1.obj project2,正在忽略'/EDITANDCONTINUE'

然后在project1和projects的属性中。将其设置为:

项目属性->配置属性->C/C++->常规->调试信息格式,设置为“程序数据库(/Zi)”


我们必须在项目属性的链接器->调试窗格下将“生成调试信息”设置为“是(/Debug)”。我不确定最初是如何为调试构建设置的,也不知道为什么这不是默认设置,但现在可以开始了。(VS2010,如果相关的话。)

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

为什么是链接器错误?我相信你,我只是没有经验的C++和VisualStudio。从ZI(程序数据库编辑并继续)切换到ZI(程序数据库)可以消除这些错误,但这可能只是隐藏了根本问题。你能详细说明一下吗?@Mark编译分为三个阶段,(1)解析-理解每个cpp文件的内容,(2)代码生成-为每个函数文件生成操作码,以及(3)链接-将每个函数的操作码链接到一起。此警告以LNK开头,表示这是链接器错误。当没有“/EDITANDCONTINUE”时,此警告仍然显示“忽略/EDITANDCONTINUE”,这是一个很好的提示选项。@GlennMainard它是一个内部Microsoft Visual Studio标志,在使用其他标志时启用。我在调试项目中导入了一个为发布版编译的库,并出现了警告。确实是这样。有什么特别的标志我可以通过吗?我已经通过了
\Zi
,但仍然收到了此警告。它是
/
,而不是“\”。此外,请确保您在尝试构建的构建(调试或发布)中选择了它。您可能需要为链接到的项目执行此操作,而不仅仅是针对具有警告的项目。