易语言支持库制作学习笔记.doc
文本预览下载声明
易语言支持库制作学习笔记
本文讲讲用VS2008制作易语言支持库(动态库和静态库)的具体方法和步骤。这是我学习制作支持库时的操作步骤和学习笔记,贴出来分享下,也方便我以后查询。时间仓促水平有限,不到之处还请各位高手们批评指正,以便完善。本文欢迎转载,但请注明作者和出处。谢谢!易语言支持库制作顺序是先制作动态库(dll) 再制作静态库(lib)。I. 动态库的制作1. 打开VS2008, 新建项目MFC DLL, 名称mylib, 完成2. 项目属性,配置里选择所有配置 (设置debug和release模式的配置项)项目属性 - 常规 - 字符集 设置为多字节字符集 项目属性 - C++选项卡 - 附加包含目录 填入sdk的Elib目录,如我的Elib目录是 D:\E51\sdk\cpp\ELib3. 编写代码1. 打开mylib.cpp文件2. 文件头处加入#include lib2.h#include lang.h#include fnshare.h#include fnshare.cpp3.文件结尾处加入自己的代码1) 定义LIB_INFO这段代码是定义模块信息的,只在动态模块中使用,所以加入宏__E_STATIC_LIB来定义。也就是说,如果是静态库那么这段代码就不会被编译。静态库编译的时候只需在项目设置的C++ - 预处理器 中加入 __E_STATIC_LIB 即可。#ifndef __E_STATIC_LIBstatic LIB_INFO LibInfo ={/* { 库格式号, GUID串号, 主版本号, 次版本号, 构建版本号, 系统主版本号, 系统次版本号, 核心库主版本号, 核心库次版本号, 支持库名, 支持库语言, 支持库描述, 支持库状态, 作者姓名, 邮政编码, 通信地址, 电话号码, 传真号码, 电子邮箱, 主页地址, 其它信息, 类型数量, 类型指针, 类别数量, 命令类别, 命令总数, 命令指针, 命令入口, 附加功能, 功能描述, 消息指针, 超级模板, 模板描述, 常量数量, 常量指针, 外部文件} */LIB_FORMAT_VER, _T(LIB_GUID_STR), LIB_MajorVersion, LIB_MinorVersion, LIB_BuildNumber, LIB_SysMajorVer, LIB_SysMinorVer, LIB_KrnlLibMajorVer, LIB_KrnlLibMinorVer, _T(LIB_NAME_STR), __GBK_LANG_VER, _WT(LIB_DESCRIPTION_STR), _LIB_OS(__OS_WIN), _WT(LIB_Author), _WT(LIB_ZipCode), _WT(LIB_Address), _WT(LIB_Phone), _WT(LIB_Fax), _WT(LIB_Email), _WT(LIB_HomePage), _WT(LIB_Other), sizeof(DataTypes)/sizeof(DataTypes[0]), DataTypes, LIB_TYPE_COUNT, _WT(LIB_TYPE_STR), sizeof(Commands)/sizeof(Commands[0]), Commands, ExecuteCommand, NULL, NULL, mylib_ProcessNotifyLib, NULL, NULL, sizeof(Consts)/sizeof(Consts[0]), Consts, NULL};PLIB_INFO WINAPI GetNewInf(){return (LibInfo);};#endif注意: GetNewInf 是易语言动态库 (dll) 唯一必须导出的函数。所以需要在.def文件里定义以下mylib.def里加入EXPORTS ; 此处可以是显式导出 GetNewInf接下来我们看看LIB_INFO 是如何定义的。具体含义可以在开发文档里察看。这里根据模块不同,需要修改的地方有1- LIB_ 这样的变量是我们另外定义的,可以定义在mylib.h中如下:#ifndef __E_STATIC_LIB#define LIB_GUID_STR 0000000000000000000000000000 /*GUID串: 0000-0000-0000, 必须使用guidgen.exe生成*/#define LIB_MajorVersion 1 /*库主版本号*/#def
显示全部