编译DPK项目时出现Delphi内部错误
我有一个DPK项目,它在编译(到编译DPK项目时出现Delphi内部错误,delphi,compiler-errors,delphi-xe3,Delphi,Compiler Errors,Delphi Xe3,我有一个DPK项目,它在编译(到DelphiIDE)时有时会显示错误(“内存不足”),有时它会成功编译。 但是,当我尝试通过MSBUILD编译它时,它总是抛出以下错误消息: 错误F2084:内部错误:AV004A784A-WFFFD3764-1 有人有办法解决吗?像这样的内部错误是编译器错误。我们无法解决这些问题,只有编译器开发人员才能解决。您需要向Embarcadero提交错误报告。鉴于XE3的古老性,您不太可能得到修复 Delphi的现代版本不太容易出现内存不足故障,因此如果升级是一种选择,
DelphiIDE
)时有时会显示错误(“内存不足”),有时它会成功编译。
但是,当我尝试通过MSBUILD
编译它时,它总是抛出以下错误消息:
错误F2084:内部错误:AV004A784A-WFFFD3764-1
有人有办法解决吗?像这样的内部错误是编译器错误。我们无法解决这些问题,只有编译器开发人员才能解决。您需要向Embarcadero提交错误报告。鉴于XE3的古老性,您不太可能得到修复 Delphi的现代版本不太容易出现内存不足故障,因此如果升级是一种选择,那么这样做可能会回避问题
如果升级不是一个选项,那么每次遇到这些错误时,您可能都要继续混日子和诅咒。这实际上非常常见(至少我经常遇到此类错误)。我确实采用了从DPK中逐步删除源代码文件的方法,直到编译成功。通过这种方式,您还可以看到是哪个文件导致了这些错误,然后继续一步一步地注释该文件中的源代码部分,直到找到有问题的行,然后重写它(以您需要找到自己的方式)。正如David Heffernan所说,您没有办法真正解决它,因为错误是编译器或链接器的内部错误,只有编译器或链接器的开发人员才能删除该错误 但通常会有一些变通办法 根据我的经验,此类内部错误通常与泛型和匿名方法或内联代码有关,尤其是当这两个或所有这些方法结合在一起时 因此,请找出在内部错误发生之前所做的代码更改。如果使用版本控制系统或Delphi的内部历史记录系统,请恢复到以前的版本,直到错误消失。然后,您可以对“违规”代码进行更改,并查看是哪种代码导致了内部错误 通常,过于复杂的表达式(特别是对于我上面提到的类型)会导致内部错误。如果是这种情况,请先通过计算子表达式来简化表达式。另外,不使用特殊的泛型声明,如
x := TList<SomeType<Integer>>.Create;
x:=TList.Create;
您应该尝试使用预定义的类型:
type
SomeTypeInteger = SomeType<Integer>;
SometypeList = TList<SomeTypeInteger>;
...
x := SometypeList.Create;
类型
SomeTypeInteger=SomeType;
SometypeList=TList;
...
x:=SometypeList.Create;
换句话说,
- 通过回顾您的历史记录,直到它消失,尝试找到“冒犯”的代码
- 一旦你找到了它,试着简化这段代码。解开表达式和预定义类型
- 尝试不同的方式来表达代码,直到错误消失