加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 为什么我的单位“使用不同版本编译”我自己的文件?

发布时间:2020-12-15 10:07:22 所属栏目:大数据 来源:网络整理
导读:我正在构建一个使用插件的程序.不幸的是,插件框架的动态链接迫使RTL和VCL退出我的项目EXE并进入BPL版本,并且它们没有启用调试信息. 所以我构建了一个静态链接到我的插件的测试框架,这样我就可以在跟踪代码时看到我正在做的事情.但是现在,每次我尝试重新编译
我正在构建一个使用插件的程序.不幸的是,插件框架的动态链接迫使RTL和VCL退出我的项目EXE并进入BPL版本,并且它们没有启用调试信息.

所以我构建了一个静态链接到我的插件的测试框架,这样我就可以在跟踪代码时看到我正在做的事情.但是现在,每次我尝试重新编译时,都会收到一个错误:“unit turbu_skills是用不同版本的turbu_database.GDatabase编译的”

我以前见过这个错误,但只有当我一直在改变我可能不应该做的事情时,比如RTL或VCL库.我不明白为什么用我自己的代码做这件事. turbu_skills和turbu_database单元都是我自己编写的单元. GDatabase是一个全局单例变量,其类定义I在几周内没有变化.触发重新编译的任何更改都会导致此错误,即使我没有触及任何一个单元中的任何内容.

执行完整版本(SHIFT-F9)会使其正确编译.但是,如果我然后按单位(任何单位)按SPACE并按F9,我会再次收到错误.发生了什么,我该如何阻止它?这不会发生在主应用程序中,只会发生在测试框架中.

编辑:我有我所有单位的来源.删除DCU和类似文件没有帮助.将整个项目复制到另一台计算机,删除所有DCU,并在那里构建没有帮助.我的程序布局和编译器之间存在客观的,可重现的冲突,我想摆脱它.

如果有人想测试它,可以在http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe找到源.它需要已安装JVCL的Delphi 2009;安装程序包将负责其余部分.也许拥有源代码可以帮助有人追踪它.我当然希望如此,因为无论问题在哪里,它都超出了我的范围.问题可以在testing.exe和turbu.groupproj中的turbu.exe中找到.

编辑2:原来这是另一个跨单位泛型问题.格儿.我设法编写了一个解决方法.我希望他们很快就能解决仿制药问题.

解决方法

错误“单元用不同版本的……编译”是一个令人讨厌的错误.它发生在如下情况:
+--------+
     | unit A |
     +--------+
      |      |
      |      |
      V      |
  +--------+ |
  | unit B | |
  +--------+ |
      |      |
      |      |
      V      V
     +--------+
     | unit C |
     +--------+

单元A和B都使用单元C,单元B使用C.单元B和C被编译,并且由于某种原因单元B的源不可用.现在更换单元C(任何更改都会进行并重新编译)单元C的dcu与单元B使用的单元C不同,因此单元B也需要重新编译.但遗憾的是,源代码不可用,因此编译器放弃了.

目前还不完全清楚你的情况有什么问题.

您有一个链接到插件的测试框架.那么单位X和Y在哪里适合并且您是否认识到上面显示的模式?

但是,完整构建解决问题的事实暗示了这个方向.这不是我第一次看到部分重新编译的问题.所以我总是使用完整版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读