Visual Studio 中出现 D8049 错误的原因是啥?

Posted

技术标签:

【中文标题】Visual Studio 中出现 D8049 错误的原因是啥?【英文标题】:What's the cause of a D8049 error in visual studio?Visual Studio 中出现 D8049 错误的原因是什么? 【发布时间】:2016-02-08 03:58:43 【问题描述】:

我正在使用 openframeworks 创建一个项目(完整源代码在这里:https://github.com/morphogencc/ofxAsio/tree/master/example-udpreceiver),并且空项目似乎可以正常编译。

我添加了 ASIO 库和一些头类,现在项目似乎给我以下错误:

1>------ Build started: Project: example-udpreceiver, Configuration: Debug x64 ------ 1> main.cpp 1>cl : Command line error D8049: cannot execute 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\c1xx.dll': command line is too long to fit in debug record 1>cl : Command line error D8040: error creating or communicating with child process

我在 *** 甚至微软的页面上都找不到任何错误 D8049 的示例,而且谷歌几乎没有找到任何结果。唯一远程有用的是这个 github 问题:

https://github.com/deplinenoise/tundra/issues/270

但我仍然不确定是什么导致了问题。有没有人熟悉这个错误,并且可以推荐一种方法来解决导致它的原因?

提前致谢!

【问题讨论】:

【参考方案1】:

对使用 UE4 的我来说,这是一个间歇性错误。

我添加了“bLegacyPublicIncludePaths = false;”到 project.Build.cs 的最里面的块并重新编译没有错误。

然后我删除了该行并再次编译,没有错误。

错误消息建议添加“DefaultBuildSettings = BuildSettingsVersion.V2;”到 project.Target.cs 工作。

【讨论】:

【参考方案2】:

这听起来有点奇怪,因为它基本上来自内部生成的数据。但是,您确实可以控制它。从表面上看错误消息,您可能在命令行中传入了许多/很多定义的符号(或者您确实有冗长的定义),或者您可能有一些冗长的文件路径。

如果您查看项目属性,C++ 部分下的选项之一是“命令行”,它将准确显示传递给编译器的内容。当您查看时,您可以看到您有许多或冗长的参数,然后进行更改以缩短它们。

定义太多?将它们放在标题中(可能是 stdafx.h)并以这种方式包含它们。

长文件路径?缩短路径,将文件放在其他位置,或为使用较短路径的真实目录设置文件系统别名。

【讨论】:

谢谢;查看命令行参数帮助我理清了不应该添加的内容!包含太多不相关的文件作为附加包含目录。

以上是关于Visual Studio 中出现 D8049 错误的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Visual Studio 2015打开TFS大量报错问题解决方案

Visual Studio中的scanf()报错以及编译器的选择

Unity报错解决办法:Visual Studio Editor Package version 2.0.11 is available........

Visual Studio 2017 IDE之xml过大报错

Visual Studio 2019报错:缺少mfc120.dll

Visual Studio Code类名报错提示experimentalDecorators”的解决方法