c++ - 错误 MSB6006 : "CL.exe" exited with code 1 after adding template function or class

标签 c++ templates crash msvc12 cl

抢先问这个问题,因为关于这个错误代码的信息不多。解决起来很简单,但由于没有给出正确的错误消息,我花了很多时间来诊断。

那到底发生了什么?

  • 我在我的项目中添加了模板化函数
  • 现在当项目编译时,弹出一条消息说 CL.exe 有问题需要关闭
  • Visual Studio 中止编译,错误 MSB6006:“CL.exe”退出,代码 1

问题是我的模板函数中存在语法错误。谁能猜到。

然而,很难找到,因为这些都没有被报道。请参阅我的回答,了解如何确定哪些功能有缺陷。

模板函数位于 header 中包含的 .cpp 中,但是,在 header 中完全定义它们没有任何区别。

// foo.h

template <typename T>
void foo();

...

#include "foo.cpp"



// foo.cpp

template <typename T>
void foo() 
{
...
}

最佳答案

首先,您需要单独编译所有包含模板函数的 .cpp 文件(在项目资源管理器中选择一个,右键单击并“编译”)。

对我来说,第一个提示是其中一些已编译,而另一些 cl.exe 崩溃了。

下一步是创建一个只有一个函数的 bogus.cpp 文件,我在其中一个一个地添加了对我创建的每个模板化函数的调用。添加一个后:重新编译。一切顺利,直到我找到有缺陷的那个,现在 bogus.cpp 也崩溃了 cl.exe。大奖。

最后的工作是修复语法错误,如果没有错误消息这很烦人,但是一旦完成,bogus.cpp 将再次编译。返回到那里添加更多函数调用,直到您涵盖所有内容。

希望我能帮上忙。

关于c++ - 错误 MSB6006 : "CL.exe" exited with code 1 after adding template function or class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33529570/

相关文章:

c++ - 用数据点填充矩阵

c++ - accept() block (有挂起的连接); Ctrl+C 解锁?

php - Twig 模板的分析器

crash - Android Studio 卡住

java - Eclipse EXCEPTION_ACCESS_VIOLATION 崩溃

c++ - 是否有任何 API 可以在 Windows 中获取路径 "C:\Documents and Settings"?

c++ - QPushButton 改变颜色后调整大小

templates - 更改生成的代码 'Check if parameter is null'

c++ - 尝试理解模板和名称查找

crash - linux 上的 jvmti 代理 fatal error : C [libc. so.6+0x7ae68] strcpy+0x18