Indy 编译提示版本不一致问题的解决
2017-11-09 15:06
387 查看
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文件。
至此问题得到了解决,并且做到了“知其然且知其所以然”!
本文编写参考了以下文章,在此表示感谢!
http://blog.csdn.net/gencheng/article/details/8858240
相关文章推荐
- 动态库的gcc版本不一致造成的编译问题的解决办法
- 解决VS编译提示“当前不会命中断点,源代码与原始版本不同”的问题
- [版本构造]给delphi生成的软件增加版本信息 续---编译乱码问题解决
- 使用cxf 关于JAXB2.1和JDK1.6/6.0版本不一致的问题 --已解决
- 解决QT5.2及以上版本连接mysql提示QMYSQL driver not download 问题
- 解决cocos2d-X 2.0版本后创建的Android项目提示org.cocos2dx.lib.Cocos2dxActivity找不到问题
- MVC 程序在编译时提示 GAC与 Temporary ASP.NET Files目录内引用文件版本不一致
- Java环境变量配置&解决版本不一致问题
- studio android.useDeprecatedNdk=true解决ndk提示版本低不能自动编译jni
- intellij IDE build出错,无法显示图片,找不到tomcat server,java编译版本过低,异常推出后无法启动项目等常见问题解决
- 编译android源码提示/usr/bin/jar命令不存在问题的解决方法
- eclipse的jdk编译版本项目JDK编译版本不一致解决办法
- Android问题-DelphiXE8安装后编译Android提示SDK无法更新问题(XE10也可以解决)
- 解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 解决maven update project jdk编译版本变化的问题
- Android 编译出错版本匹配问题解决办法
- Cordova编译Android 22 以上版本,中文目录出错问题的解决办法
- Java环境变量配置&解决版本不一致问题
- (ZT) 解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- 解决ADT和SDK版本不一致问题