【问题标题】:Visual Studio 2015 Update 1, clang errorVisual Studio 2015 更新 1,clang 错误
【发布时间】:2015-12-01 10:30:19
【问题描述】:

在我的项目(Visual Studio 2015 Update 1)中尝试使用带有 Visual Codegen 的新 clang 时,出现以下错误:

clang.exe : error : cannot specify -o when generating multiple output files

这只是一个新创建的项目,带有自动生成的 main。

我真的不知道该怎么办。

任何帮助表示赞赏。

【问题讨论】:

  • 好吧,-o 选项说明了输出文件的名称。错误信息表明clang认为需要生成多个输出文件;这是为什么呢?
  • @DevSolar 天知道为什么clang认为需要输出多个文件。
  • 命令行是什么样的?
  • 等一下 DevSolar ;)
  • /Yu"stdafx.h" /GS /TP /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd"x64\Debug\vc140.pdb" /Zc:inline /fp :precise /D "_D​​EBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /GR /Gd /MDd /Fa"x64\Debug\" / nologo /Fo"x64\Debug\" /Fp"x64\Debug\ConsoleApplication2.pch"

标签: c++ visual-studio-2015 clang


【解决方案1】:

不清楚您在做什么,但很明显您没有使用跨平台节点中的 Clang 项目模板之一。我可以通过使用 Win32 > Win32 项目模板并将项目的平台工具集选择更改为“Clang 3.7”来重现您的问题。

这不起作用,它完全破坏了预编译的标头功能。它以某种方式确信它需要编译 stdafx.h。不只是一次,它通过编译器两次。这使得 Clang 对这个错误消息感到厌烦,它一次只接受一个文件。它也不知道如何利用 Clang 的 PCH 支持,没有所需的 -emit-pch 选项的迹象。

您需要关闭该功能才能取得成功。项目 > 属性 > C/C++ > 预编译头文件 > 预编译头文件 =“不使用...”。选择 stdafx.cpp 并重复。

这解决了构建问题,最终的可执行文件有点令人惊讶地运行没有问题。应该有点清楚的是,您在 Microsoft 从未测试过的场景中使用 Clang。看起来 IntelliSense 解析器也需要做更多的工作。 Afaik Clang 支持 was intended 针对 Android 和 iOS,当前版本为 alpha 质量。

【讨论】:

  • 您好,感谢您的回答。在最新的更新中添加了 clang,不仅针对 Android 和 iOS
  • Hmya,如果他们实际测试过就好了。只需按照解决方法即可解决此问题。
  • G-rea-t!多谢兄弟!令人难以置信的是,他们 (MS&VS) 是如何让这种情况发生的。不靠谱。
【解决方案2】:

作为已接受答案的补充,如果您在设置Precompiled Header = "Not using..." 后仍然遇到此问题。另一个问题可能是 Object File Name 字段中的值不正确。

该字段位于:项目 > 属性 > C/C++ > 常规 > 对象文件名 = $(IntDir)%(filename).obj

注意:最初在这里发现这个解决方案:http://www.progtown.com/topic2009949-clang

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2018-04-27
    • 2016-09-19
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多