用“易写易库(EXEK)”为易语言3.0开发支持库?
用“易写易库(EXEK)”为易语言3.0开发支持库,能行得通吗?今晚(严格地是昨晚)我(liigo)做了些尝试,结果不甚理想。
现在易语言最新版本都4.11了,为啥还要给易语言3.0开发支持库呢?呵呵,只是一时兴起而已,没有特别的用意。如果非要找一点理由的话,我认为是:易写易库(EXEK)支持开发带动态图标的命令和命令参数,而这只能在易语言3.x版本中才能展现出来。
我的尝试过程和结果如下:
我把一个用易语言4.1编译出的支持库文件复制到易语言3.0的lib目录下,发现易语言3.0根本无法启动,最后找到原因是:易语言4.1编译出的支持库文件依赖最新的核心支持库4.5版,而易语言3.0版的核心库(3.0版本)与易语言4.1版本的核心库(4.5版本)无法共存。
好吧,用易语言4.1编译不行,用易语言3.0编译总可以了吧。我把支持库源代码(.e)用尝试易语言3.0打开,结果打开失败,更不用说编译了。
好吧,3.0不行,我用3.8,这是易语言3.x系列的最后一个版本。先把4.1编译的支持库文件拿过去,无法加载,依赖核心库4.5,结果跟前面一样。用易3.8打开“易写易库(EXEK)”模块的源代码,勉强能打开,但丢了不少代码,根本编译不了。打开支持库源代码,打开了,稍加整理,载入4.1编译出的EXEK模块(.ec),也成功了,编译,易语言3.8挂了!重复前面的动作,结果是一样的。
结论:易语言3.x无法使用易语言4.x编译出的DLL;易语言3.x一般打不开易语言4.x生成的源代码文件(*.e),即使有时勉强打开了也会丢失部分代码;易语言3.x可以导入易语言4.x编译出的易模块(*.ec),但不能保证编译通过。
对于“易语言3.x无法使用易语言4.x编译出的DLL”这一条,我有些不明白,为什么易语言4.x编译出的DLL要依赖最新版本的核心库呢?按说,只要该DLL没用到什么新特性,应该可以重用3.x版本的核心库。
当然,这不是什么大不了的事情。从来都是新版兼容旧版,要求旧版去兼容新版,似乎要求太过份。
暂时不能在易语言3.x的IDE中,看到我的支持库中定义的命令动态图标和参数动态图标,稍稍有些失落。
哎,我又想到,把易语言4.x编译出的支持库,经过“斩月”处理,应该就可以被易语言3.x正常加载了吧?“易写易库(EXEK)”模块未用到除核心库之外的其它支持库,估计可以被“斩月”处理,有机会尝试一下。耶,暂时保留希望。
2008.10.1补记:
本文所提出的问题,已经有了肯定的答案,详见:易写易库(EXEK)玩“花”儿之三:命令有图标支持库,附图。