Visual studio 如何确保不忽略/EDITANDCONTINUE指令

Visual studio 如何确保不忽略/EDITANDCONTINUE指令,visual-studio,visual-studio-2015,edit-and-continue,Visual Studio,Visual Studio 2015,Edit And Continue,当我尝试在VSC15中编辑并继续时,收到此消息: 'file.cpp' in 'LIB.DLL' was not linked with Edit and Continue enabled. Ensure that /INCREMENTAL linking is enabled, and the /EDITANDCONTINUE directive is not ignored. 我已经确保启用了/INCREMENTAL,但无法确定第二部分 编译器命令行: /Yu"stdfx.h" /GS

当我尝试在
VSC15
中编辑并继续时,收到此消息:

'file.cpp' in 'LIB.DLL' was not linked with Edit and Continue enabled. 
Ensure that /INCREMENTAL linking is enabled, and the /EDITANDCONTINUE directive is not ignored.
我已经确保启用了
/INCREMENTAL
,但无法确定第二部分

编译器命令行:

/Yu"stdfx.h" /GS /analyze- /W3 /Gy /Zc:wchar_t /ZI /Gm- /Od /Fd".\Debug\vc140.pdb" /Zc:inline /fp:fast /D "x86" /D "WIN32" /D "_WINDOWS" /D "DEBUG" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /errorReport:none /WX- /Zc:forScope /RTC1 /GR /Gd /Oy- /MTd /Fa".\Debug\" /EHsc /Fo".\Debug\" /Fp".\Debug\LIB.pch"
/OUT:".\Debug\LIB.dll" /MANIFEST:NO /NXCOMPAT /PDB:".\Debug\LIB.pdb" /DYNAMICBASE /DEF:"EXPORT.DEF" /IMPLIB:".\Debug\LIB.lib" /DLL /MACHINE:X86 /NODEFAULTLIB:"libc.lib" /OPT:REF /SAFESEH /INCREMENTAL /PGD:".\Debug\LIB.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:".\Debug\LIB.dll.intermediate.manifest" /MAP /OPT:ICF
链接器命令行:

/Yu"stdfx.h" /GS /analyze- /W3 /Gy /Zc:wchar_t /ZI /Gm- /Od /Fd".\Debug\vc140.pdb" /Zc:inline /fp:fast /D "x86" /D "WIN32" /D "_WINDOWS" /D "DEBUG" /D "_UNICODE" /D "UNICODE" /D "_WINDLL" /errorReport:none /WX- /Zc:forScope /RTC1 /GR /Gd /Oy- /MTd /Fa".\Debug\" /EHsc /Fo".\Debug\" /Fp".\Debug\LIB.pch"
/OUT:".\Debug\LIB.dll" /MANIFEST:NO /NXCOMPAT /PDB:".\Debug\LIB.pdb" /DYNAMICBASE /DEF:"EXPORT.DEF" /IMPLIB:".\Debug\LIB.lib" /DLL /MACHINE:X86 /NODEFAULTLIB:"libc.lib" /OPT:REF /SAFESEH /INCREMENTAL /PGD:".\Debug\LIB.pgd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:".\Debug\LIB.dll.intermediate.manifest" /MAP /OPT:ICF

尝试在链接器设置的高级页面上关闭SAFESEH


/SAFESEH:NO

查看命令行:

编译器命令行:编辑并继续与/Gm-不兼容,它需要“启用最小重建”(/Gm)

链接器命令行:/OPT:REF、/SAFESEH、/OPT:ICF都与“编辑并继续”不兼容,应导致LNK4075

如果尝试干净地构建LIB.dll,应看到以下警告:

1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification
1>ConsoleApplication1.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification

vs2015案例的完整官方答案也在这里。阅读这篇文章可能会有所帮助

至于我的例子,我在链接命令行中没有看到任何不可兼容的标志,结果是

/LTCG

默认情况下是打开的,因此我必须在解决方案的每个项目中使用附加链接器选项手动将其关闭

/LTCG:关闭


我也有同样的问题,做了上面描述的所有步骤,但没有运气

我使用VS2017

帮助下一步:您必须为项目中的每个特定*.cpp文件指定/ZI:

  • 右键单击解决方案资源管理器中的*.cpp文件
  • 属性>C/C++>常规>调试信息格式=用于编辑和继续的程序数据库(/ZI)

第一部分呢?我的意思是,“LIB.DLL”中的“file.cpp”未链接到启用了“编辑并继续”的状态。啊。。。我也不知道为什么不是这样,也不知道在哪里可以做到这一点。据我所知,链接器设置/属性中没有此选项。只有全局
Tools>Options>Edit and Continue
AFAIK复选框。我假设这些是您在项目中创建的文件?
LIB.DLL
是项目输出,
file.cpp
在该项目中。我已经在做了。这之前的警告是这么说的。我仍然得到:
Severity code Description项目文件行抑制状态错误'LIB.DLL'中的'File.cpp'未链接并启用了“编辑并继续”。确保启用了/INCREMENTAL linking,并且没有忽略/EDITANDCONTINUE指令。编辑并继续
如果将这些不兼容性记录在链接器错误旁边,将会有很大帮助。