Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
Visual studio 2012 警告LNK4075当一个C++/CLI项目使用/ZI(编辑并继续)引用静态库项目_Visual Studio 2012_C++ Cli_Warnings_Edit And Continue - Fatal编程技术网

Visual studio 2012 警告LNK4075当一个C++/CLI项目使用/ZI(编辑并继续)引用静态库项目

Visual studio 2012 警告LNK4075当一个C++/CLI项目使用/ZI(编辑并继续)引用静态库项目,visual-studio-2012,c++-cli,warnings,edit-and-continue,Visual Studio 2012,C++ Cli,Warnings,Edit And Continue,我在Visual Studio 2012解决方案中有以下项目: 本机(无/clr)静态库项目,使用/ZI编译以供编辑和继续 C++/CLI DLL项目,它引用上述静态库 C++/CLI项目生成时出现以下警告: warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification 如果将/OPT:NOLBR添加到C++/CLI项目的链接器选项中,则警告变为: warning LNK4075: ignoring

我在Visual Studio 2012解决方案中有以下项目:

  • 本机(无
    /clr
    )静态库项目,使用
    /ZI
    编译以供编辑和继续
  • C++/CLI DLL项目,它引用上述静态库
C++/CLI项目生成时出现以下警告:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
如果将/OPT:NOLBR添加到C++/CLI项目的链接器选项中,则警告变为:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
任何更改C++/CLI项目增量链接设置的尝试都不会更改警告(C++/CLI项目无论如何都不会增量链接)

我知道我将无法在C++/CLI项目中使用“编辑并继续”,因为这不受支持。实际上,在静态库项目中将/ZI更改为/ZI(禁用编辑并继续)可以消除警告,但我不能这样做-该库的其他非CLR使用者需要使用编辑并继续

如何在不禁用静态库中的“编辑并继续”的情况下消除此警告(并且希望不为静态库的本机用户和CLR用户维护单独的生成配置)?我的意思是,有没有办法要求链接器忽略嵌入在引用的静态库中的
/EDITANDCONTINUE
指令(与
/NODEFAULTLIB
可以忽略
/DEFAULTLIB
指令的方式大致相同)


我已经创建了一个复制所述问题的解决方案。

没有其他方法可以

  • 在库中禁用“编辑并继续”
  • 创建一个单独的构建配置für“编辑并继续(/ZI)”和“程序数据库(/ZI)”
当然:我不知道在/ZI和/ZI之间有一个预定义的宏来确定。。。因此,您需要定义自己的预处理器,以区分这些配置之间的差异

由于“/OPT:LBR”规范

这是一条毫无意义的错误消息,链接器选项仅对ARM二进制文件有效。这只是一个bug,使用/OPT:NOLBR可以消除它的刺痛感,并得到真正的警告

这是足够准确的,虽然它也没有赢得任何奖项,但您要求在静态库项目中提供“编辑+继续”支持,但这对于混合模式的.NET程序集不可用。undocumented/IGNORE链接器选项可用于抑制警告消息,但此选项被Chapell列为一个


只要不想更改静态lib项目,就必须接受此警告。它是完全良性的。使用/Zi重新编译时,您将无法获得它。

我也遇到了同样的问题,发现唯一的解决方案是删除项目的.vcxproj和.sln文件,然后再次创建项目。 但在同一个项目的一个旧副本中,我发现了一个更好的解决方案:我在projectname.vcxproj文件中更改了行 外形真实 到 剖面图错误 LNK4075警告消失。
是Visual Studio探查器造成了这些问题。

我正在搜索设置,在那里我可以使用VisualStudio中的下拉菜单设置
/OPT:NOLBR
。但是,没有用于此的UI元素。您必须将此作为附加选项添加到
配置属性->链接器->命令行下