我尝试使用 Visual Studio 6 SP6 编译一个项目并得到以下结果:
usbcore.h(18) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1794)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
usbcore.h 第 18 行包含 include 指令:
18: #include "usbiface.h"
空或不存在的 usbiface.h 会产生相同的错误。我评论了这一行并得到了相同的错误,但对于下一个包含文件。
总结一下: 每个引用公共项目头的
#include
指令都会发生编译器错误。
我找出了导致该错误的原因。其中一个包含路径(使用 /I 开关传递给编译器)有一个尾部反斜杠。
编译器命令行是:
CPP /nologo /MT /W3 /GX /Zi /Od /I "$(ZLIB_PATH)" /I "..\headers"
和
ZLIB_PATH
后面有一个反斜杠。删除反斜杠解决了问题。
就我而言,将标签 WholeProgramOptimizationtrue 从 true 更改为 false 解决了问题。
当我在 ctor 的定义中省略括号时,我遇到了这个问题。这是一个愚蠢的错误,但检查所有这些艰难的修复是非常费力的。所以我只是提供这种可能性。我没想到会出现内部编译器错误。
就我而言(VC6.0 SP6a),这是由于令人困惑的
using
声明造成的。编译器似乎无法确定我是在定义 Foo::Bar
还是 Bar
(在全局命名空间中)。
namespace Foo {
class Bar;
}
using Foo::Bar;
class Bar {
};
就我而言,我必须关闭“生成浏览信息”选项才能避免这种情况。 (项目设置\C/C++\常规)
就我而言,我尝试将 NET4.8 项目迁移到 NET7。在 C++/CLI 项目中切换 CLR 版本后,我开始看到错误:
1>C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\7.0.12\ref\net7.0\mscorlib.dll : fatal error C1001: Internal compiler error.
1>(compiler file 'msc1.cpp', line 1639)
为了解决这个问题,我遵循了 将 c++/cli 项目从 .net 4.7 迁移到 .netcore 3.1 的问题。
从 .vcxproj 中删除
<CompileAsManaged>true</CompileAsManaged>
有助于解决该问题。