【问题标题】:Command line error D8016: '/O2' and '/RTC1' command-line options are incompatible命令行错误 D8016:“/O2”和“/RTC1”命令行选项不兼容
【发布时间】:2016-08-28 17:21:37
【问题描述】:

我正在尝试为我的项目使用/O2 优化。我检查了发布配置是否启用(解决方案->属性->配置属性->配置->发布)并将调试信息格式设置为/Zi,但现在我不知道如何解决这个错误。

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?
  • 从解决方案开始-> 属性没有帮助。看来您已经更改了调试配置的 /O2 设置,它使用 /RTC。切换到 Release 配置,它已经使用 /O2 和 /Zi,因此不需要帮助。使用 Build > Configuration Manager > Active solution configuration 进行切换。并恢复设置。
  • 如果您将其作为答案发布,我会选择它:)
  • 和题主关系不大,但是我自己没及时找到答案。如果您将 cmake 与 Visual Studio 生成器一起使用,那么如果在 CMAKE_CXX_FLAGS_DEBUG 变量中找不到它,某些版本的 cmake 会将 /O2 标志隐式添加到生成的调试项目中。基本上这个变量已经使用了/RTC1 标志,所以你必须明确地添加/Od 标志以避免这种行为。就我而言,我确实从变量中明确删除了 /Od 标志并遇到了问题。

标签: visual-studio optimization release


【解决方案1】:

优化设置 Maximize Speed (/O2) 与代码生成的基本运行时检查设置不兼容。

更改基本运行时检查的设置:

解决方案 -> 属性 -> 配置属性 -> C/C++ -> 代码生成 -> 基本运行时检查

将其设置为“默认”,它应该可以工作。

【讨论】:

  • 所以,当我将BasicRuntimeChecks 选项更改为Default 时,调试器会忽略调试点。在这种情况下,我无法逐行调试代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
相关资源
最近更新 更多