![易语言支持库制作学习笔记_第1页](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWaFWjaAKNeQAAHjxZlJKCU805.jpg)
![易语言支持库制作学习笔记_第2页](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWaFWjaAKNeQAAHjxZlJKCU8052.jpg)
![易语言支持库制作学习笔记_第3页](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWaFWjaAKNeQAAHjxZlJKCU8053.jpg)
![易语言支持库制作学习笔记_第4页](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWaFWjaAKNeQAAHjxZlJKCU8054.jpg)
![易语言支持库制作学习笔记_第5页](http://file4.renrendoc.com/view14/M00/16/1B/wKhkGWaFWjaAKNeQAAHjxZlJKCU8055.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
)VS2008,MFCDLL,mylib,(debugrelease模式的配置项)项目属性->常规->字符集设置为多字节字符集项目属性->C++选项卡->附加包含目录填入sdkElib目录,如我的Elib目录是#include<lib2.h>#include<lang.h>#include<fnshare.h>#includefnshare.cpp>这段代码是定义模块信息的,只在动态模块中使用,所以加入宏E_STATIC_LIB来定义。C++->E_STATIC_LIB#ifndefE_STATIC_LIBstaticLIB_INFOLibInfo/*{库格式号,GUID串号,主版本号,次版本号,构建版本号,系统主版本号,系统次版本号,核心库主版本号,核心库次版本号,支持库名,支持库语言,支持库描述,支持库状态作者姓名,邮政编码,通信地址,电话号码,传真号码,电子邮箱,主页地址,其它信息,类型数量,类型指针,类别数量,命令类别,命令总数,命令指针,命令入口,附加功能,功能描述,消息指针,超级模板,模板描述,常量数量,常量指针,外部文件}*/ GBK_LANG_VER, _LIB_OS( _WT(LIB_Fax),_WT(LIB_Email),_WT(LIB_HomePage),_WT(LIB_Other), NULL,NULL,mylib_ProcessNotifyLib,NULL,NULL,sizeof(Consts)/sizeof(Consts[0]),Consts,NULLPLIB_INFOWINAPIreturn注意:GetNewInf是易语言动态库(dll)唯一必须导出的函数。所以需要在.def文件里定义;LIB_INFO是如何定义的。具体含义可以在开发文档里察看。这里根据模LIB_mylib.h中如下:#ifndefE_STATIC_LIB {00000000-0000-0000,guidgen.exe生成*/#defineLIB_MajorVersion1/*库主版本号*//#defineLIB_BuildNumber20110318*构建版本号*/#defineLIB_SysMajorVer3/*系统主版本号*/#defineLIB_SysMinorVer0/*系统次版本号*/#defineLIB_KrnlLibMajorVer3/*核心库主版本号*/#defineLIB_KrnlLibMinorVer0/*核心库次版本号*/#defineLIB_NAME_STR支持库名称*支持库名*/#defineLIB_DESCRIPTION_STR支持库功能描述*功能描述*/#defineLIB_Author"作者名称"/*作者名称*/#defineLIB_ZipCode"邮政编码"/*邮政编码*/#defineLIB_Address"通信地址"/*通信地址*/#defineLIB_Phone"电话号码"/*电话号码*/#defineLIB_Fax"传真号码"/*传真号码*/#defineLIB_Email"电子邮箱"/*电子邮箱*/#defineLIB_HomePage主页地址*主页地址*/#defineLIB_Other"其它信息"/*其它信息*/#defineLIB_TYPE_COUNT1/*命令数量*/#defineLIB_TYPE_STR0000基本命令\0""\0*命令分类*/ ])Commands命令类别,ExecuteCommand命令指针,Consts常量都是一样的。这些都EXTERN_CINTWINAPImylib_ProcessNotifyLib(INTnMsg,DWORDdwParam1,DWORDdwParam2)#ifndefif(nMsg==NL_GET_CMD_FUNC_NAMES)//返回所有命令实现函数的的函数名称数组(char*[]),支持静态编译的动态库必须处理returnelseif(nMsg==NL_GET_NOTIFY_LIB_FUNC_NAME)//返回处理系统通知的函数名称(PFN_NOTIFY_LIB函数名称),支持静态编译的动态库必须处理returnelseif(nMsg==NL_GET_DEPENDENT_LIBS)return//返回静态库所依赖的其它静态库文件名列表(格式为\0分隔的文本,结尾两个\0),支持静态编译的动态库必须处理kernel32.libuser32.libgdi32.lib//NULLNR_ERRreturnProcessNotifyLib(nMsg,dwParam1,IDE或者运行时环境的通知。并且在编译的时候起到在静mylib_ProcessNotifyLib#ifndef定义常量Consts#ifndefE_STATIC_LIBLIB_CONST_INFOConsts[]/*{中文名称,英文名称,常量布局,常量等级(LVL_),参数类型(CT_),文本内容,数值内容}*/_WT("常量_ZERO"),_WT("ZERO"),NULL,LVL_SIMPLE,CT_NUM,NULL,0},//_WT("常量_TEST_WT("TESTNULLLVL_HIGH,CT_TEXTTESTNULL常量等级有//////参数类型有//sample://sample://sample:DataTypes#ifndefE_STATIC_LIB/*{中文名称,英文名称,数据描述,索引数量,命令索引,对象状态,图标索引,事件数量,事件指针,属性数量,属性指针,界面指针,元素数量,元素指针}*/{_WT数据类型命令"),_WT("DatatypeCommand"),_WT测试数据类型命令。"),DatatypeCommandIndexs,NULL,0,0,NULL,0,NULL,NULL,0,NULL关于LIB_DATA_TYPE_INFO的解释以及窗口型数据的定义都可参见开发文档EXTERN_Cvoidmylib_函数名(PMDATA_INFpRetData,INTiArgCount,PMDATA_INFpRetDataCMD_INFOm_dtRetType为_SDT_NULL(即定义无返回值)时,pRetData无效;iArgCountpArgInf#ifndefE_STATIC_LIBPFN_EXECUTE_CMDExecuteCommand[]=mylib_//staticconstchar*constCommandNames[]"mylib_函数名ARG_INFOCommandArgs[]/*{参数名称,参数描述,图像索引,图像数量,参数类型(SDT_),默认数值,参数类别(AS_)}*/_WT("1"),_WT("1"),0,0,SDT_INTNULL,NULL函数参数数组定staticCMD_INFO/*{中文名称,英文名称,对象描述,所属类别(-1是数据类型的方法),命令状态(CT_),返回类型(SDT_),此值保留,对象等级(LVL_),图像索引,图像数量,参数个数,参数信息{_WT("函数名"),_WT("英文函数名"),_WT("函数功能描述"),1,NULL,SDT_BOOL,0,LVL_SIMPLE,0,0,1,CommandArgs},//基本命令函数名前的前缀mylib_mylib的全小写mylib_。参数类型如果 AS_RECEIVE_VAR或AS_RECEIVE_VAR_ARRAY//(MAKEWORD(0,0), MAKELONG(MAKEWORD(1,1), MAKELONG(MAKEWORD(1,2),// MAKELONG(MAKEWORD(1,3), MAKELONG(MAKEWORD(1,4), MAKELONG(MAKEWORD(1,5), MAKELONG(MAKEWORD(1,6),// MAKELONG(MAKEWORD(2,0),// MAKELONG(MAKEWORD(3,0),// MAKELONG(MAKEWORD(4,0), MAKELONG(MAKEWORD(5,0), MAKELONG(MAKEWORD(6,0),//->-mylib_static。程序向导里设置程序类型为"静态库"。去掉预编译头的钩。点击完成。选择动态库列表中的文件,ctrl+Cmylib_staticctrl+Vmylib_static项目属性,release配置。修改配置如下+->+->(resym.exe的工作C++->C++->->+->->D:\E51\sdk\tools\resym.exeallinfile=$(TargetPath)outfile=$(TargetPath)resym.exelib库连接符号的,以解决连接时符号冲突的问题。程序位置设成你sdk所在位置。release编译即可。打开项目管理,点击配置管理器,mylib的配合处下拉菜单选择新建",添入名称release_static,+->+->C++->->_USRDLLC++->->+->->+生成事件->生成后事件->命令行填入你D:\E51\sdk\tools\resym.exeallinfile=$(TargetPath)outfile=$(TargetPath).lib"两数相加",英文名称是"myadd",(12)mylib.cpp#include"stdafx.h"#include"mylib.h"#include<lib2.h>#include<lang.h>#include<fnshare.h>#include<fnshare.cpp>//EXTERN_Cvoidmylib_myadd(PMDATA_INFpRetData,INTiArgCount,PMDATA_INFpRetData->m_float=pArgInf[0].m_float+#ifndefE_STATIC_LIBmylib_myaddstaticconstchar*constCommandNames[]"mylib_myaddARG_INFOCommandArgs[]/*{参数名称,参数描述,图像索引,图像数量,参数类型(SDT_),默认数值,参数类别(AS_)}*/_WT("1_WT("1,小数型00SDT_FLOATNULLNULL函数参数数组_WT("2_WT("2,小数型00SDT_FLOATNULLNULL函数参数数组staticCMD_INFO/*{中文名称,英文名称,对象描述,所属类别(-1是数据类型的方法),命令状态(CT_),返回类型(SDT_),此值保留,对象等级(LVL_),图像索引,图像数量,参数个数,参数信息{_WT两数相加"),_WT("myadd"),_WT两个小数相加求和,返回小数"),1,NULL,SDT_FLOAT,0,LVL_SIMPLE,0,0,2,CommandArgs},//基本命令EXTERN_CINTWINAPImylib_ProcessNotifyLib(INTnMsg,DWORDdwParam1,DWORDdwParam2)#ifndefif(nMsg==returnelseif(nMsg==returnelseif(nMsg==NL_GET_DEPENDENT_LIBS)return(INT)NULL;returnProcessNotifyLib(nMsg,dwParam1,#ifndefE_STATIC_LIBstaticLIB_INFOLibInfo/*{库格式号,GUID串号,主版本号,次版本号,构建版本号,系统主版本号,系统次版本号,核心库主版本号,核心库次版本号,支持库名,支持库语言,支持库描述,支持库状态作者姓名,邮政编码,通信地址,电话号码,传真号码,电子邮箱,主页地址,其它信息,类型数量,类型指针,类别数量,命令类别,命令总数,命令指针,命令入口,附加功能,功能描述,消息指针,超级模板,模板描述,常量数量,常量指针,外部文件}*/LIB_FORMAT_VER,_T(LIB_GUID_STR), GBK_LANG_VER, _LIB_OS( sizeof(Commands)/sizeof(Commands[0]),Commands,ExecuteCommand,NULL,NULL,mylib_ProcessNotifyLib,NULL,NULL,0,NULL,PLIB_INFOWINAPIreturnmylib.h#ifnd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河道修防工(初级)技能鉴定理论考试题库-下(判断题)
- 2024年广西医疗卫生事业单位招聘(医学影像技术)备考试题库(供参考)
- 2024秋九年级化学上册 第五单元 化学方程式 课题1 质量守恒定律第1课时 质量守恒定律教学设计1(新版)新人教版
- 二年级语文下册 课文5 16雷雨教案 新人教版
- 部编版六年级语文2023年小升初招生押题卷附答案 (三)
- 14第2部分高二英语听力全真模拟训练(5)(教学设计)2025版高二英语听力专项分类训练(提升篇)
- Unit1Ilikedogs教学设计1-Unit1-四年级上册英语(译林版)
- 2024年五年级英语上册 Unit 5 There is a big bed第五课时教案 人教PEP
- 通信工程师:网络优化考试考点巩固三
- 预约诊疗须知
- 2023年二年级乐考实施方案
- 深圳市中核海得威生物科技有限公司核技术利用迁建及退役项目项目环境影响报告表
- 股权变更情况说明书范本
- 家长参与幼儿园课程建设的研究及策略 论文
- Code-Review-Record白盒测试记录模板
- PCN、ECN变更管理流程
- 四川省乐山市井研县2022-2023学年数学五年级第二学期期末预测试题含答案
- 保真合同范本
- 信号与系统课件 §5.3 无失真传输
- 传播学概论课件(新版)
- 求是发表《在二十届中央政治局第四次集体学习时的讲话》读后感3篇
评论
0/150
提交评论