我正在构建一个使用插件的程序。不幸的是,插件框架的动态链接迫使 RTL 和 VCL 从我的项目 EXE 中退出并进入 BPL 版本,并且它们没有启用调试信息。
所以我构建了一个静态链接到我的插件的测试框架,这样我就可以在跟踪代码时实际看到我在做什么。但是现在,每次我尝试重新编译时,都会出现错误:“unit turbu_skills was compiled with a different version of turbu_database.GDatabase”
我以前见过这个错误,但只有当我一直在改变我可能不应该改变的东西时,比如 RTL 或 VCL 库。我不明白为什么它用我自己的代码来做。turbu_skills 和 turbu_database 单元都是我自己编写的单元。GDatabase 是一个全局单例变量,它的类定义我已经好几周没有改变了。任何触发重新编译的更改都会导致此错误,即使我没有触及任何一个单元中的任何内容。
执行完整构建 (SHIFT-F9) 会使其正确编译。但是,如果我在一个单位(任何单位)中按空格键并按F9,我会再次收到错误消息。发生了什么事,我该如何阻止它?这不会发生在主应用程序中,只会发生在测试框架中。
编辑:我有我所有单位的来源。删除 DCU 和类似文件无济于事。将整个项目复制到另一台计算机,删除所有 DCU 并在那里构建没有帮助。我的程序布局和编译器之间存在客观的、可重现的冲突,我想摆脱它。
如果有人想测试它,可以在http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe找到源代码。它需要已安装 JVCL 的 Delphi 2009;安装程序包将负责其余的工作。也许拥有可用的源代码将帮助某人追踪这一点。我当然希望如此,因为无论问题在哪里,它都超出了我的范围。该问题可以在 testing.exe 和 turbu.groupproj 的 turbu.exe 中找到。
编辑 2:原来这是另一个跨单元泛型问题。Grr。我设法编写了一个解决方法。我只是希望他们能尽快解决泛型问题。