Visual Studio:命令行错误D8016:'/ Ox'和'/ RTC'命令行选项不兼容

时间:2014-04-20 06:18:15

标签: c++ visual-studio-2012

我正在使用Visual Studio 2012编写C ++项目。我在构建项目时尝试使用O2或Ox优化。但它引发了一个错误 “cl:命令行错误D8016:'/ Ox'和'/ RTC'命令行选项不兼容。”

我试图从互联网上找到解决方案,但它对我不起作用。

希望有人能帮助我。

最佳

3 个答案:

答案 0 :(得分:4)

首先,您的错误代码是错误的。发布时你可能犯了一个错误,因为它应该是D8016,而不是D0816。希望你没有做过其他可能误导我们的错误......

除此之外,错误信息是明确的:

  

Visual Studio:命令行错误D0816:'/ ox'和'/ RTC'命令行选项不兼容

但是你也可以在这里看到这个错误类型的描述:

Command-Line Error D8016

简短的回答 - 正如错误所说 - ,你不能同时使用它们。生活充满了妥协,你需要选择其中任何一个对你来说更重要。

解决方案是关闭发布版本的/RTC,并仅将其用于调试版本以查找问题。有关详细信息,请参阅上面第一个链接中提供的corresponding documentation

  

运行时错误检查是一种在运行代码中查找问题的方法;有关更多信息,请参见如何:使用本机运行时检查。

     

如果使用任何/ RTC编译器选项在命令行编译程序,代码中的任何pragma optimize指令都将无声地失败。这是因为运行时错误检查在发布(优化)版本中无效。

     

您应该使用/ RTC进行开发构建; / RTC不应用于零售版本。 / RTC不能与编译器优化一起使用(/ O选项(优化代码))。使用/ RTC构建的程序映像会比使用/ Od构建的映像稍微大一些(比使用/ Od构建慢5%)。

答案 1 :(得分:3)

根据MSDN documentation:您无法将/RTC/O Options (Optimize Code)一起使用。

如果要使用优化,请关闭/RTC标志(或关闭所需运行时检查的优化)。

或者为了避免这一切,创建单独的构建配置,根据需要具有单独的标志(如调试和发布版本)。

答案 2 :(得分:0)

要通过GUI关闭/RTC,只需转到ProjectProperties / C / C ++ / CodeGeneration:

enter image description here

并将“ Basuc运行时检查”设置为默认值。


...或通过命令行界面从命令行中删除/RTC


...或通过更改

在vcxproj文件中将其禁用
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

<BasicRuntimeChecks>Default</BasicRuntimeChecks>

在相应的配置中。