|
|
1
4
我可能会被否决。在d2005中,我有一个10k loc单元(datamodule),它完全停止了编译。必须将一些数据集/代码分离到另一个数据模块。那10K单位是一个烂摊子。你真的应该考虑把一些代码重构成其他单元。我的模块自d2005/分离之后变得更加糟糕,但它仍然在d2007中编译。所以我的答案是a)重构和b)升级到d2009。 |
|
2
2
很明显,这是由于后台编译器和实际编译器之间的细微差别造成的。你可以四处看看(QualityCentral)关于这个主题的知识。 另外,由于您没有显式地声明这一点,您应该删除不必要的单元,并在可能的情况下将uses语句下移到实现。也许你的工具能帮上忙。 为了确保你应该检查单位别名和路径设置。 |
|
|
3
2
您编写了一个完整的构建总是成功的,但是在增量构建失败并出现此错误后不久。假设您在ide中遇到过这种情况,您是否尝试过使用命令行编译器dcc32进行增量构建? 如果不使用“-q”开关(这可能是大多数用于命令行构建的makefile或脚本所执行的操作),它将输出大量信息,即按什么顺序编译哪些文件。您可以在IDE中出现错误后尝试进行增量生成,也可以在IDE旁边保持命令行打开,并使用Alt+选项卡进行编译,完全跳过IDE中的编译。 我只是假设你有一种使用Dcc32来构建的方法,不管是哪种方式,你的项目的大小我都无法想象。 |
|
|
4
2
我们经常会遇到类似的问题,而且我们从来没有设法(或困扰足够长的时间)找到确切的原因。delphi在点击ctrl-f9时选择编译单元的顺序似乎有问题,这与单元的实际依赖顺序不兼容。
|
|
|
5
0
有没有其他项目使用同一代码库的一部分?如果在不同的编译器设置或ifdef下编译其中一个,可能会更改某些dcu中的某些内容,从而导致循环依赖。完整的构建会重建所有DCU,然后问题就消失了。 |
|
|
7
0
我们也有这个问题,还有一个相当大的代码基。 我们目前正在使用D2009,但在所有以前的Delphi版本中都有这个问题。 最常见的情况是在执行源代码管理的更新之后立即执行,因此我怀疑delphi构建过程中存在时间戳问题。 在我们的例子中,如果ctrl-f9失败并报告循环引用,则第二个ctrl-f9通常会工作 |
|
|
8
0
有人告诉我处理这个问题的方法是在项目中打开另一个任意文件,更改该文件,保存它,然后再次尝试运行增量编译。令人惊讶的是,这通常是可行的。 我们有一个4mloc的项目,这是不时出现的,这个“解决方案”为我工作。 |
|
|
9
0
我以前也曾与此抗争过,根据我的经验,这个错误几乎是合法的。已经有很长一段时间了(这个错误与版本无关),但我对这种情况的记忆是,它涉及一个循环,循环的一部分在实现中。 单元A在实现中使用B。单元B在接口中使用A。如果先编译b,它会调用a,但由于b的调用在实现中,所以它会成功。如果你先编译一个,它会调用b,b在接口中返回并调用a,boom。只有当两个交叉引用都在实现中时,这样的循环才是安全的。 解决方案是设计一些东西,以便在接口中使用最少的东西,并确保这些单元中没有类似于循环的东西。只要你用代码把类型定义和单元分开,这是很容易做到的。 错误的发生和发展取决于你在做什么,这是这个问题的一个标志,因为它涉及到你如何进入循环。当你做一个完整的构建,顺序是一致的,你要么得到100%或0%,这不是随机的。 |
|
zeus · 如何在调整数组大小后保持指向动态数组的指针有效? 11 月前 |
|
|
SignalOne · 德尔福(FMX)循环参考 1 年前 |
|
|
Sascha Ott · 如何从线程调用线程的方法? 1 年前 |
|
|
user1580348 · 问题:如何在上次最小化后还原应用程序? 1 年前 |
|
tua · Delphi的TLinkLabel坏了吗? 1 年前 |
|
|
Frank.Wu · delphi:RGB到HSL不正确 1 年前 |