-Ot标志在Visual Studio 2017中代表什么?

时间:2018-06-15 16:13:24

标签: visual-studio visual-studio-2017

我收到错误 'p2'中错误C1007无法识别的标志'-Ot' 但无法在项目的命令行字符串中找到-Ot。谷歌搜索没有帮助。任何人都知道那面旗帜代表什么?

4 个答案:

答案 0 :(得分:4)

我在编译的项目中遇到类似的问题。 MSVC 2017链接器尝试将依赖库“ .lib”链接到您的项目,并且它是在启用了Optimization flag \Ot的情况下编译的,这似乎是引起该错误的原因。这就是为什么您无法在自己的项目的命令行上看到它的原因。您可以尝试以下操作之一。

1)在未启用\ Ot的情况下重新编译您的库(属性-> C / C ++->优化->收藏夹大小或速度->都不选择),然后重新编译整个项目。

2)将MSVC 2017工具链更新为最新版本,应该为14.14.26428。更新后,重新编译您的项目。奇怪,但是在我的机器配置中,工具链14.13无法链接使用较新的工具链编译并启用\ Ot的库。

这两种解决方案都适用于我,但是我最终使用了数字2。

答案 1 :(得分:3)

您应该在项目的优化属性页中找到此标记。

-Ot(/ Ot)选项是偏好快速代码标志(试图改善空间执行时间)

根据Microsoft Visual C ++文档(https://docs.microsoft.com/en-us/cpp/build/reference/os-ot-favor-small-code-favor-fast-code),

  

如果使用/ Os或/ Ot,则还必须指定/ Og以优化   代码。

答案 2 :(得分:0)

在构建nmap时发生在我身上。可执行文件没有/ GL,而libnetutil有。从libnetutil中删除/ GL可以修复它。或者,如果可能(和期望的话),将/ GL与所有相关目标(lib,dll / exe)对齐。

答案 3 :(得分:0)

仅供以后参考此错误消息: 我未设置-Ot选项而收到此错误,该错误消息具有误导性。原来,我试图用140个工具集(VS2015-忘记升级到141)构建一个项目,该项目具有已经用141(VS2017)构建的.dll和.lib依赖项。将工具集更新为141后,就可以构建项目了。