完美解决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 编译提示版本不一致的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
delphi 字符串处理中的怪异现象与处理方式
1, 怪异现象:字符串相加操作不正常! 以上代码,明显输出字符串应含有后缀".jpg",但实际输出却不含后缀(如下),字符串加法操作似乎不起作用了! 采用showMessage进行输出,看看结果如何? 结果仍是不显示字符串后缀,但可以看到字符串偏左显示,似乎后面还有很多不可见字符. 2,怪异原因:字符串中含有\0,即字符串终止符 以上现象已经看出,字符串加法失效的原因可能是含有某些不可见字符,那到底是什么字符呢? 回到这些字符串产生的源头,即下面由字节数组转换成字符串函数: 显然,此函
-
解决delphi TAdoQuery组件的close方法导致”列名无效“错误的问题
1,故障现象 一次程序运行,出现如下错误: 对应代码如下: 2,故障分析 Query_alert_2的语句在查询分析器中单独执行是正常的.排除语句出错. 如果注解掉Query_alert_1,则错误变为Query_alert_3执行出错: 2019-07-11 09:32:26 Query_alert_1执行完毕 2019-07-11 09:32:27 Query_alert_2执行完毕 2019-07-11 09:32:42 Do_Update_Statis出错:列名 'bat_pos1' 无
-
完美解决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.TIdServer
-
完美解决Jpush[获取sdk版本失败!]的问题
错误日志如下: 5-31 12:47:40.088 23896-23896/? E/JIGUANG-JCore: [JCoreGlobal] Get sdk version fail![获取sdk版本失败!] 05-31 12:47:40.088 23896-23896/? W/System.err: java.lang.UnsatisfiedLinkError: Native method not found: cn.jiguang.service.Protocol.GetSdkVersion
-
springboot 高版本后继续使用log4j的完美解决方法
springboot 高版本后不支持log4j了,很多人还是喜欢log4j风格的日志,我们自己来加载log4j,其实很容易. 第一步:我们手动加入我们想要的log4j jar,在项目里面随便建一个文件夹,将用到的jar丢进去,右键 add to build path 第二步: 在main函数启动类所在的包或者其子包下写一个这样的类,用来加载log4j配置文件,是的,什么内容都没有. import org.springframework.boot.context.properties.Confi
-
完美解决Android Studio集成crashlytics后无法编译的问题
问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hostname in certificate didn't match: <maven.fabric.io> != <*.motili.com> OR <*.motili.com> OR <motili.com> build.gradle部分脚本(fabric插件自动生成的): buildscript { repositories { maven { url 'https://
-
oracle 提示登录密码过期完美解决方法
oracle 提示登录密码过期解决 1.登录到oracle的 服务器 2.切换到oracle 用户 3.设置到当前操作的实例名:export ORACLE_SID=XXX 4.连接数据库的命令行模式:sqlplus /nolog 5.sql: conn /as sysdba;用dba的身份登录 6.修改过期的用户密码设置: 修改用户密码:alter user XXX identified by XXX 修改用户密码之后,重新使用修改的用户密码连接数据库就ok了,假如仍然还有锁定用户操作, 记得执
-
完美解决pycharm 不显示代码提示问题
pycharm 不显示代码提示 1.检查IDE省电模式是否关闭状态!!! file → power save mode 取消掉 2.检查代码提示是否成功开启. setting → Inspections → Spelling 要开启 setting → Inspections → Python 要打开 3.使用快捷键:ctrl+j.ctrl+space.alt+/ 其他(不能安装): 1.检查是否Python2,3冲突. 如果冲突了,只要更改PATH变量位置就好:或者指定python2 还是 p
-
php错误提示failed to open stream: HTTP request failed!的完美解决方法
google或者baidu一下,好多这样的问题,解决的方法都是修改php.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On 这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可.)重启服务器. 但是有些还是会有这个警告信息,想用完美的解决
-
详解JFX11+IDEA跨平台打包发布的完美解决办法
1 概述 IDEA2020.1的文档中提到只有JFX8的工程才支持打成jar包,并且,如果直接使用Build Artifacts的话,会如下提示: IDEA文档有提到这个的解决办法,是使用一些第三方工具.里面介绍了通过IDEA结合自身/Maven/Gradle打包发布JFX11以上版本的方法.但是,不足的地方有: 直接创建JFX工程默认只有一个src目录,不像Maven工程还带有resources与test,给管理资源文件以及外部依赖造成了困难,getClass().getResource()会
-
Python 完美解决 Import “模块“ could not be resolved ...的问题
vscode 中 python 提示警告错误,但是还是能跑起来代码: Import "playwright.sync_api" could not be resolved Pylance reportMissingImports 原因可能有两个: 1.未下载此包,打开命令行,输入 $ pip list,可以看到下载过的所有包,如果未下载,则下载后重启 vscode 就可以了. 2.本机有多个 python 的编译环境,比如使用 pyenv 管理多个版本,而在 vscode 里使用的那个
-
有关tomcat内存溢出的完美解决方法
tomcat内存溢出设置JAVA_OPTS 答案1 设置Tomcat启动的初始内存 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等选项可 进行设置 三.实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -D
随机推荐
- Swift的74个常用内置函数介绍
- jQuery拖拽通过八个点改变div大小
- perl pop push shift unshift实例介绍
- js中传递特殊字符(+,&)的方法
- 在asp.net(C#)中采用自定义标签和XML、XSL显示数据
- C语言 数据结构平衡二叉树实例详解
- Android Camera是否支持变焦的判断方法总结
- javascript实现网页屏蔽Backspace事件,输入框不屏蔽
- JS实现部分HTML固定页面顶部随屏滚动效果
- 刚才在简化php的库,结果发现很多东西
- linux中 shell 历史命令记录功能
- jquery插件qrcode在线生成二维码
- cwRsync提示password file must be owned by root when running as root的解决方法
- jQuery EasyUI菜单与按钮详解
- JS验证input输入框(字母,数字,符号,中文)
- BootStrap Tooltip插件源码解析
- 用js自动判断浏览器分辨率的代码
- js树形控件脚本代码
- flash加载各种外部文件
- win2003 iis6 iis假死