因此,我建立了一个测试框架,静态链接到我的插件,以便我在跟踪代码时可以实际看到我在做什么。但现在,每次尝试重新编译时,都会出现错误:"unit turbu_skills was compiled with a different version of turbu_database.GDatabase"
我以前见过这个错误,但只有在我改变了RTL或VCL库之类的东西时才会出现。我不明白为什么我的代码会这样做。turbu_skills和turbu_database单位都是我自己编写的单位。 GDatabase是全局单例变量,其类定义已经几周没有更改过了。触发重新编译的任何更改都会导致此错误,即使我没有触摸任何单位中的内容也是如此。
进行完整构建(SHIFT-F9)会使其正确编译。但是,如果我然后在一个单位(任何单位)中按空格并按F9,则会再次出现错误。发生了什么,我该如何停止它?这仅在测试框架中发生,而不在主应用程序中发生。
编辑:我拥有所有单位的源代码。删除DCUs和类似文件没有帮助。将整个项目复制到另一台计算机上,删除所有DCUs并在那里构建也没有帮助。我的程序布局与编译器之间存在客观、可重复的冲突,我想摆脱它。如果有人想测试,可以在http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe找到源代码。它需要使用已安装JVCL的Delphi 2009; 安装程序包会负责其余部分。也许公开源代码将有助于某人追踪此问题。我真的希望如此,因为无论问题在哪里,我都无能为力。问题存在于testing.exe和turbu.groupproj中的turbu.exe中。
编辑2:原来这是另一个跨单元泛型问题。我设法编写了一种解决方法。我只希望他们很快解决这个泛型问题。