易语言模块及DLL

一、模块其实就是几个独立子程序源代码的程序集,是易语言的源代码,而DLL可以认为是模块的编译结果。
模块与dll都是打包一组功能供他人调用,唯一的区别就是一个类似API(模块),一个类似ABI(DLL)
可能有人不清楚API和ABI,说白了,API就是提供源码级的接口,ABI提供二进制级别的接口。
模块只能给易程序调用,而dll还可以用c等其他程序调用。
模块只能用e编写,e调用;dll可以用其他语言编写,其他语言调用,提供的是更底层的兼容。
模块支持窗口组件作参数.DLL不支持,模块全局变量是整个EXE的全局变量,DLL的全局变量只是DLL的全局变量.
模块的代码会全部写到EXE.体织会越来越大,DLL的代码只写在DLL中.模块只能用在易语言中用.DLL可以用在别的
dll是动态链接库。里面有好多命令。任何编程语言都可以直接调用。
而易语言模块,可以引用dll的命令,可以不是dll链接库的命令,只能有易语言使用,是可以把dll命令,或易语言自带的支持库命令写成更高级的封装命令来调用。就相当于易语言写好的子程序一样。有需要的不用从头写,直接拿模块的命令,来使用。
语言中用
二、为什么要有模块?
  1、为了方便管理,方便其他人或自己调用,减少不必要的重复劳动,这是任何一个编程语言都具有的模块功能。
  2、被易语言的编辑环境所逼:
    易语言除了有一个程序集可以由您自定义将您的代码分到不同程序集体之外,其他方面简直弱智:
    A、所有DLL、常量、自定义数据类型都全部集中在一起,如果你写的程序中有较多的DLL或自定义类型等,特别是有一些内容一样但是名称可能不一样的,不仅是重复的问题,会看得眼花,试一下,从一个程序中抽取部分,构成一个模块,将是很烦人的事。
     所以,只能用模块,将他们分类,各自的DLL、数据类型与稳中有各自的子程序集中到一起,是为模块。
    B、易语言同一窗口下的事件子程序只能集中在一个程序集下,不允许分开。设想一下,你有一个窗口,窗口中有选择夹的n个子夹,每个子夹都有不同的列表框,按键等事件子程序,而所有这些事件子程序可能有上百个甚至上千个,查找一个子程序是什么感觉?

三、模块是源代码的集合,可以说是明码,不利于保护代码
四、模块可以编译成DLL,其他人无法再修改,更加安全吧。

五、DLL只能传入常规参数,不能传递组件参数,甚至不能传递字节集,参数不能具有可空标志,这是基本区别。

六、除此之外,很多人不知道,模块与DLL的最重要区别是什么?
  我来告诉你,尽管易语言没有明说,但是这个应该成为一个编程规范!
  就是:DLL不宜用支持库!
  目前情况,必须用核心支持库,除了核心支持库外,不宜再用其他支持库!
  为什么?
  如果你还用其他支持库,你写成模块得了,为何写成DLL?这不是主要的,主要的是:
易语言编译时,不会识别DLL所用到的任何支持库,包括核心支持库,这个与模块最大的不同。
有些用了DLL的程序,编译后在你的电脑上运行正常,而到其他电脑甚至可能你自已电脑的其他目录运行时,就会提示缺少支持库!
希望:易语言能连核心支持库都不用的DLL出现。

八、DLL不宜用支持库,不用支持库,用什么?API,回答正确,这才是模块与DLL的根本区别,可以这么说,写模块时,用易语言的支持库,写DLL时就用API,这才是一种规范。
我用API的习惯是,凡是核心支持库的命令能做到的就不用API,一两行API代码能取代扩展支持库的,就不用支持库。
大家可以看看,有些模块,包括精易模块,明明核心支持库有同样的命令,非要用API搞个模块命令出来,简直画蛇添足,多此一举!

九,学易言编程,一定要写DLL,并且尽可能将模块写成DLL,这样才会提高。

十,再次给易语言提个建议,这个建议有很很多人提个过了:
易语言应该再出一个核心中核心支持库,该核心支持库与现有核心支持库完全兼容,但是仅包括最基本核心命令,不包括任何的组件(窗口)命令,完全可以从现有的核心支持库提取出来,大小控制在100KB以内,编译时直接包含进入文件中。
大家都知道,控制台程序、DLL程序、DOS程序等基本不会用到任何的窗口组件,为何背着一个大大的支持库呢,还容易给人家报病毒。
我用C写了一个小控制台程序(无任何窗口组件,供其他EXE文件调用),编译后才10K,而用E,1M多啊,报毒就不说了。(转自精益论坛)


发布日期:

所属分类: 易语言 标签: