为什么使用openmp时会间歇性地发生“致命错误C1001”错误?

时间:2015-02-11 07:16:43

标签: c++ visual-studio-2010 boost openmp

我的代码在没有#openmp的情况下运行良好 但是当我添加#openmp编译器

时,我收到了这个错误
  

1> c:\ users \ hdd amd ali \ documents \ v studio 10 projects \ visual studio 2010 \ projects \ escaledesvols2 - copy \ escaledesvols2 \ djikstra.cpp(116):致命错误C1001:发生内部错误编译器。   1 GT; (编译文件'f:\ dd \ vctools \ compiler \ utc \ src \ p2 \ wvm \ mdmiscw.c',ligne 1098)

请注意: 我使用了许多不同的库(如#boost)

#include <string>
#include <iostream>
#include <stdio.h>
#include <ctime>
#include <iomanip>
#include <sstream>
#include <msclr\marshal_cppstd.h> // for unmanaged piece of code
#include <vcclr.h> 

3 个答案:

答案 0 :(得分:2)

我最近遇到过这个问题;我正在使用visual studio 2015进行编译。我使用visual studio 2017尝试了它,但我仍然遇到了内部编译器错误。然后我尝试使用visual studio 2013,它告诉我,我无法回复&#34; openMP部分中的语句。当我从VS 2013和VS 2105中删除返回时,编译器能够成功编译。因此,使用VS 2013进行尝试是有意义的,它会为您提供更好的错误描述。您也可能在openMP部分中有返回语句,这可能是c1001错误的原因。

答案 1 :(得分:1)

在我的例子中,它是OpenMP循环的返回函数。删除“返回”行解决了问题。

答案 2 :(得分:0)

你应该简单地举报。

就解决方法而言,它可能与内存/资源消耗有关。降低消费的常用技巧

  • 禁用调试信息
  • 将编译单元拆分为更小的尺寸(这可能是关键:“我使用的是很多库”,除非您将所有标题都包含在一个翻译单元中,否则不应成为问题
  • 尝试减少模板实例化

可选地

  • 减少系统负载(关闭其他程序,例如可能破坏宝贵资源的Stackoverflow浏览器:))