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

问题描述 投票:0回答:3

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

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

希望有人能帮助我。

最佳

c++ visual-studio-2012
3个回答
5
投票

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

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

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

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

命令行错误 D8016

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

解决方案是为发布版本关闭

/RTC
,仅将其用于调试版本以查找问题。有关更多详细信息,请参阅相应的文档,也可从上面的第一个链接获得:

运行时错误检查是您发现运行代码中问题的一种方式;有关详细信息,请参阅如何:使用本机运行时检查。

如果您使用任何

/RTC
编译器选项在命令行编译您的程序,代码中的任何 pragma 优化指令将默默地失败。这是因为运行时错误检查在发布(优化)构建中无效。

您应该使用

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


3
投票

根据MSDN文档:您不能将

/RTC
/O
选项(优化代码)
一起使用。

如果你想使用优化,关闭

/RTC
标志(或关闭你想要的运行时检查的优化)。

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


1
投票

要通过 GUI 关闭

/RTC
,只需转到项目 -> 属性 -> C/C++ -> 代码生成:

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


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

/RTC


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

<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

<BasicRuntimeChecks>Default</BasicRuntimeChecks>

在相应的配置中。

© www.soinside.com 2019 - 2024. All rights reserved.