c++ - VS2008 内部编译错误

标签 c++ visual-studio compiler-construction visual-c++ c1001

在尝试从 MSVC6 切换到 MSVC 2008 时,我一直遇到内部编译器错误。在对程序的不同部分进行大量注释后,我将错误追踪到两个不同 CPP 文件中的两行代码.这两个 CPP 文件都编译成功,但会以某种方式影响错误是否出现在其他文件中。

这两行都涉及实例化几个复杂的嵌套模板。它们似乎也是应用程序中唯一使用抽象类作为模板参数之一的地方。也就是说,我不确定这个问题涉及抽象类还是模板,这只是我注意到的最明显的事情。我什至不能确定这些线条是否重要。不过,它们的外观如下:

m_phDSAttributes = new SObjDict<RWCString, SIDataSource>(&RWCString::hash);

所以我们得到了SObjDict,一个模板化的字典类,SIDataSource,一个抽象接口(interface),参数是一个指向RWCString静态成员函数的指针。

我一直在研究代码,偶尔会遇到从一个 CPP 文件移动到另一个 CPP 文件的错误(例如,我将一堆模板声明从使用 class 更改为到 typename),但我找不到任何押韵或理由。

我不知道如何进一步调试这个问题。编译器输出的确切错误(更改了我的源文件的名称)如下。互联网上的任何地方都没有提及它。我非常渴望获得有关如何进行的任何建议。我不希望有人说“哦,你只需要做 XYZ”,但非常感谢有关如何调试此类问题的指导。

1>d:\Dev\webapi.cpp : fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'f:\dd\vctools\compiler\utc\src\p2\p2symtab.c', line 5905)

最佳答案

技巧似乎是禁用预编译头文件。我不知道为什么解决了这个问题,这很不幸,因为受影响项目的构建时间从不到 30 秒缩短到将近 5 分钟,但至少我可以向前推进。

关于c++ - VS2008 内部编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009165/

相关文章:

c++ - 我应该在析构函数中写入文件末尾吗?

c++ - 从源代码编译虚幻引擎后缺少dxgi.lib

c# - 在调试器中显示自定义索引器

c# - vs201 0 auto 化: Get the text value of a EnvDTE. CodeElement

java - 如何设置编译器选项,使其拒绝该程序,使其无法静态确保正确性?

java - 使用注释创建 API 的多个版本

compiler-construction - 如何在 LLVM 中声明全局变量?

c++ - bool 运算符缺少模板参数?

c# - Kinect如何检测小人物

c++ - 如何在 Cygwin 64 位中使用 boost asio 库