【问题标题】:How to get an error instead of just warning LNK4006 "... already defined in ... second definition ignored"?如何得到一个错误而不是仅仅警告 LNK4006“......已经在......第二个定义被忽略”?
【发布时间】:2016-08-28 06:58:20
【问题描述】:

在构建包含重复定义的函数的静态库时,MSVC++ 2013 只给了我一个警告:

LNK4006 "... already defined in ... second definition ignored"?

恐怕一个警告太容易错过了。如果发现同一函数的多个定义(在不同的 .cpp 文件中),是否可以让 MSVC++ 2013 报告错误并导致构建失败?

请注意,解决方案 suggested here 的反面(即项目设置 > 链接器 > 取消选中“强制文件输出”)不适用,因为它适用于可执行文件,但在这个问题中,静态库是焦点,因此没有“链接器” " 项目选项。

【问题讨论】:

  • 您总是可以将警告视为错误。
  • @Rakete1111,谢谢,我认为此选项仅适用于 C/C++ 编译器,但不适用于链接器或图书管理员。
  • 实际上,我认为这也是链接器警告,但现在我不确定:/
  • @Rakete1111,在项目属性(以及编译器)下,链接器和图书馆员有单独的“将警告视为错误”。您可以将此作为答案发布。

标签: visual-studio visual-studio-2013 linker


【解决方案1】:

似乎没有办法将特定警告视为错误。但是,您可以将 每个 链接器警告视为错误:

转到:Project Properties -> Linker -> General -> Treat Linker Warnings As Errors 并将其切换到 Yes (/WX)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多