2015-02-11 26 views
0

我的代碼工作良好,沒有#openmp 但是當我加入#openmp編譯爲什麼在使用openmp時可能會間歇性地發生「致命錯誤C1001」錯誤?

1>三我得到這個錯誤:\用戶\硬盤AMD阿里\文件符\ v工作室10個項目\ Visual Studio 2010的\項目\ escaledesvols2 - copy \ escaledesvols2 \ djikstra.cpp(116):致命錯誤C1001:編譯器中發生內部錯誤。 1>(編譯器文件 'F:\ DD \ vctools \編譯\ 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> 

回答

0

你應該簡單地報告它。

就解決方法而言,它可能與內存/資源消耗有關。慣用的招數,以降低消耗是

  • 禁用調試信息
  • 分割編譯單元,以更小的尺寸(這可能是這裏的關鍵:「我使用許多圖書館」不應該是一個問題,除非你包括在一個翻譯單元的所有頭
  • 儘量減少模板實例

或者

  • 減少系統負載(關閉其他程序,例如您的Stackoverflow瀏覽器,可能會騰出寶貴的資源:))
0

在我的情況下,它是OpenMP循環的返回函數。刪除「返回」行解決了這個問題。

0

我最近有這個問題;我正在使用Visual Studio 2015進行編譯。我在Visual Studio 2017中嘗試了它,但仍然遇到內部編譯器錯誤。然後我用visual studio 2013試了一下,它告訴我在openMP部分裏面不能有「return」語句。當我從VS 2013和VS 2105中取消返回時,編譯器能夠成功編譯。所以,在VS 2013中試用它是有道理的,它會給你一個更好的錯誤描述。你也可能在openMP部分有return語句,這可能是c1001錯誤的原因。

相關問題