|
很多人搞不清易语言模块与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多啊,报毒就不说了。
十一,给那些写模块或整理模块的同学一些建议:
1、将您的模块中核心支持库已经有的命令从你的模块清除,易语言有信息框,你非得搞个API_信息框,有意思吗?
2、
补充内容 (2017-1-9 11:26):
|
评分
-
查看全部评分
|