繁体   English   中英

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

[英]Visual Studio: Command line error D8016: '/Ox' and '/RTC' command-line options are incompatible

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

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

希望有人能帮助我。

最好

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

除此之外,错误消息很明确:

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

但您也可以在此处查看此错误类型的说明:

命令行错误D8016

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

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

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

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

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

根据MSDN文档 :您不能将/RTC/O选项(优化代码)一起使用

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

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

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

在此输入图像描述

并将“Basuc Runtime Checks”设置为默认值。


...如果通过命令行界面构建,则从命令行中删除/RTC


...或通过更改在vcxproj文件中禁用它

<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

<BasicRuntimeChecks>Default</BasicRuntimeChecks>

在相应的配置中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM