我正在使用 Visual Studio 2012 编写 C++ 项目。我在构建项目时尝试使用 O2 或 Ox 优化。但它提示了一个错误 “ cl: 命令行错误 D8016: '/Ox' 和 '/RTC' 命令行选项不兼容。”
我试图从互联网上找到解决方案,但它对我不起作用。
希望有人能帮助我。
最佳
首先,你的错误代码是错误的。您在发布时可能犯了错误,因为它应该是 D8016,而不是 D0816。希望您没有犯其他可能误导我们的错误......
除此之外,错误信息很明确:
Visual Studio:命令行错误 D0816:“/Ox”和“/RTC”命令行选项不兼容
但是你也可以在这里看到这个错误类型的描述:
简短的回答——正如错误所说——你不能同时使用它们。生活充满妥协,你需要选择其中一个对你来说更重要的。
解决方案是为发布版本关闭
/RTC
,仅将其用于调试版本以查找问题。有关更多详细信息,请参阅相应的文档,也可从上面的第一个链接获得:
运行时错误检查是您发现运行代码中问题的一种方式;有关详细信息,请参阅如何:使用本机运行时检查。
如果您使用任何
编译器选项在命令行编译您的程序,代码中的任何 pragma 优化指令将默默地失败。这是因为运行时错误检查在发布(优化)构建中无效。/RTC
您应该使用
进行开发构建;/RTC
不应用于零售构建。/RTC
不能与编译器优化一起使用(/O 选项(优化代码))。使用/RTC
构建的程序映像将比使用/RTC
构建的映像稍大且稍慢(比/Od
构建慢 5%)。/Od
根据MSDN文档:您不能将
/RTC
与/O
选项(优化代码)一起使用。
如果你想使用优化,关闭
/RTC
标志(或关闭你想要的运行时检查的优化)。
或者为了避免这一切,创建单独的构建配置,根据需要(如调试和发布构建)具有单独的标志。