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

b09cbbtk  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(201)

我正在使用Visual Studio 2012编写C++项目。我试图在构建项目时使用O2或Ox优化。但它提示了一个错误,即“cl:命令行错误D8016:'/Ox'和'/RTC'命令行选项不兼容。”
我试着从网上找到解决办法,但它对我不起作用。
希望有人能给予我一把。
最好

41ik7eoe

41ik7eoe1#

首先,您的错误代码是错误的。你可能在发布它时犯了一个错误,因为它应该是D8016,而不是D0816。希望你没有犯其他错误误导我们...
除此之外,错误消息很清楚:
Visual Studio:命令行错误D0816:“/Ox”和“/RTC”命令行选项不兼容
但您也可以在此处看到此错误类型的描述:
Command-Line Error D8016
简短的回答--正如错误所说--你不能同时使用这两个。生活充满了妥协,你需要选择其中一个对你来说更重要的。
解决方案是关闭发布版本的/RTC,只在调试版本中使用它来查找问题。请参阅corresponding documentation,也可以从上面的第一个链接获得更多细节:
运行时错误检查是您在运行代码中发现问题的一种方法;有关详细信息,请参阅如何:使用本机运行时检查。
如果在命令行中使用任何/RTC编译器选项编译程序,则代码中的任何杂注优化指令都将默默失败。这是因为运行时错误检查在发布(优化)版本中无效。
您应该使用/RTC进行开发构建; /RTC不应用于零售版本。/RTC不能用于编译器优化(/O选项(优化代码))。使用/RTC构建的程序映像比使用/Od构建的映像稍大,稍慢(比/Od构建慢5%)。

hsgswve4

hsgswve42#

根据MSDN documentation:你不能使用/RTC/O Options (Optimize Code)
如果您想使用优化,请关闭/RTC标志(或关闭您想要的运行时检查的优化)。
或者为了避免这一切,创建单独的构建配置,根据需要使用单独的标志(如调试和发布构建)。

7cwmlq89

7cwmlq893#

要通过GUI关闭/RTC,只需转到Project -> Properties -> C/C++ -> Code Generation:

并将“基本运行时检查”设置为默认值。
...或从命令行删除/RTC(如果通过命令行界面构建)
...或在.vcxproj文件中禁用它,方法是更改

<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

<BasicRuntimeChecks>Default</BasicRuntimeChecks>

在相应的配置中。

相关问题