当前位置: 首页 > 编程笔记 >

完美解决Indy 编译提示版本不一致的问题

蓬宾白
2023-03-14
本文向大家介绍完美解决Indy 编译提示版本不一致的问题,包括了完美解决Indy 编译提示版本不一致的问题的使用技巧和注意事项,需要的朋友参考一下

1,起因

某delphi程序A使用了Indy9.0.18组件。机器中原本自带老版本的Indy组件9.0.12,后升级到9.0.18,使用一直正常。

某次操作将程序A重新build all了一下,结果提示如下信息,此后即便是compile也会出错。

[Fatal Error] uMain.pas(11): Unit IdServerIOHandlerSocket was compiled with a different version of IdServerIOHandler.TIdServerIOHandler

2,解决

显然错误原因在于indy组件出现了交错使用,应将老版本的组件彻底删除干净。

先是重装Indy组件9.0.12。将Delphi7\Source\Indy目录下的文件用新版覆盖,然后重新编译。将生成的dcu拷贝到LIb目录覆盖。

结果问题依旧。

在delphi目录下搜索id文件,发现Lib\Debug下有大量id*.dcu文件。可能是这些文件是旧版的。

于是采用9.0.12的dcu文件将其覆盖,再次rebuild程序A,通过!

3,分析

那么为什么会和“Lib\Debug”目录有关呢? delphi IDE配置了搜索目录“$(DELPHI)\Lib”,但并未配置使用Lib下的Debug目录呀。

其实新编一个工程,放入indy新版组件组件,即使Lib\Debug下有旧版组件,rebuild也是不会出错的。

分析发现,这个“Lib\Debug”目录和工程配置有关。原来,本人想要debug程序A,于是在工程选项中勾选了“Use Debug DCUs”

此选项将自动使用“Lib\Debug”目录的dcu文件,而不是Lib目录下的dcu。因为Lib目录下的dcu文件中不含调试信息。

此时我们打开IDE的debugger选项窗口,可以发现IDE使用到了“Lib\Debug”目录的dcu文件。

至此问题得到了解决,并且做到了“知其然且知其所以然”!

以上这篇完美解决Indy 编译提示版本不一致的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍完美解决Jpush[获取sdk版本失败!]的问题,包括了完美解决Jpush[获取sdk版本失败!]的问题的使用技巧和注意事项,需要的朋友参考一下 错误日志如下: 5-31 12:47:40.088 23896-23896/? E/JIGUANG-JCore: [JCoreGlobal] Get sdk version fail![获取sdk版本失败!] 05-31 12:47:40.

  • 本文向大家介绍完美解决Android Studio集成crashlytics后无法编译的问题,包括了完美解决Android Studio集成crashlytics后无法编译的问题的使用技巧和注意事项,需要的朋友参考一下 问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hostname in certificate didn't match: <maven.fabri

  • 问题内容: “ java.lang.Error:未解决的编译问题”的可能原因是什么? 附加信息: 从现有JAR顶部的版本复制一组更新的JAR文件并重新启动应用程序后,我已经看到了这一点。JAR是使用Maven构建过程构建的。 如果接口更改,我希望看到LinkageErrors或ClassNotFound错误。上面的错误提示存在一些较低级别的问题。 彻底的重建和重新部署解决了该问题。此错误是否表明J

  • jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 $.browser,使用率极高。但是在 1.9 版本发布之后,大家钟爱的这个属性被 jQuery 无情的抛弃了。大家开始着手寻找 $.browser 的替代方案。于是各种利用 IE bug 的检测方法被搜了出来: // shortest from a Russian var ie = !-[1,] // Option from

  • 本文向大家介绍完美解决java.lang.OutOfMemoryError处理错误的问题,包括了完美解决java.lang.OutOfMemoryError处理错误的问题的使用技巧和注意事项,需要的朋友参考一下 原因: 常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过

  • 本文向大家介绍ECSHOP完美解决Deprecated: preg_replace()报错的问题,包括了ECSHOP完美解决Deprecated: preg_replace()报错的问题的使用技巧和注意事项,需要的朋友参考一下 随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误。PHP发展到PHP5.5版本以后,有了很多细微的变化。而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,