易語言支持庫制作學(xué)習(xí)筆記_第1頁
易語言支持庫制作學(xué)習(xí)筆記_第2頁
易語言支持庫制作學(xué)習(xí)筆記_第3頁
易語言支持庫制作學(xué)習(xí)筆記_第4頁
易語言支持庫制作學(xué)習(xí)筆記_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

)VS2008,MFCDLL,mylib,(debugrelease模式的配置項(xiàng))項(xiàng)目屬性->常規(guī)->字符集設(shè)置為多字節(jié)字符集項(xiàng)目屬性->C++選項(xiàng)卡->附加包含目錄填入sdkElib目錄,如我的Elib目錄是#include<lib2.h>#include<lang.h>#include<fnshare.h>#includefnshare.cpp>這段代碼是定義模塊信息的,只在動(dòng)態(tài)模塊中使用,所以加入宏E_STATIC_LIB來定義。C++->E_STATIC_LIB#ifndefE_STATIC_LIBstaticLIB_INFOLibInfo/*{庫格式號,GUID串號,主版本號,次版本號,構(gòu)建版本號,系統(tǒng)主版本號,系統(tǒng)次版本號,核心庫主版本號,核心庫次版本號,支持庫名,支持庫語言,支持庫描述,支持庫狀態(tài)作者姓名,郵政編碼,通信地址,電話號碼,傳真號碼,電子郵箱,主頁地址,其它信息,類型數(shù)量,類型指針,類別數(shù)量,命令類別,命令總數(shù),命令指針,命令入口,附加功能,功能描述,消息指針,超級模板,模板描述,常量數(shù)量,常量指針,外部文件}*/ 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是易語言動(dòng)態(tài)庫(dll)唯一必須導(dǎo)出的函數(shù)。所以需要在.def文件里定義;LIB_INFO是如何定義的。具體含義可以在開發(fā)文檔里察看。這里根據(jù)模LIB_mylib.h中如下:#ifndefE_STATIC_LIB {00000000-0000-0000,guidgen.exe生成*/#defineLIB_MajorVersion1/*庫主版本號*//#defineLIB_BuildNumber20110318*構(gòu)建版本號*/#defineLIB_SysMajorVer3/*系統(tǒng)主版本號*/#defineLIB_SysMinorVer0/*系統(tǒng)次版本號*/#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/*命令數(shù)量*/#defineLIB_TYPE_STR0000基本命令\0""\0*命令分類*/ ])Commands命令類別,ExecuteCommand命令指針,Consts常量都是一樣的。這些都EXTERN_CINTWINAPImylib_ProcessNotifyLib(INTnMsg,DWORDdwParam1,DWORDdwParam2)#ifndefif(nMsg==NL_GET_CMD_FUNC_NAMES)//返回所有命令實(shí)現(xiàn)函數(shù)的的函數(shù)名稱數(shù)組(char*[]),支持靜態(tài)編譯的動(dòng)態(tài)庫必須處理returnelseif(nMsg==NL_GET_NOTIFY_LIB_FUNC_NAME)//返回處理系統(tǒng)通知的函數(shù)名稱(PFN_NOTIFY_LIB函數(shù)名稱),支持靜態(tài)編譯的動(dòng)態(tài)庫必須處理returnelseif(nMsg==NL_GET_DEPENDENT_LIBS)return//返回靜態(tài)庫所依賴的其它靜態(tài)庫文件名列表(格式為\0分隔的文本,結(jié)尾兩個(gè)\0),支持靜態(tài)編譯的動(dòng)態(tài)庫必須處理kernel32.libuser32.libgdi32.lib//NULLNR_ERRreturnProcessNotifyLib(nMsg,dwParam1,IDE或者運(yùn)行時(shí)環(huán)境的通知。并且在編譯的時(shí)候起到在靜mylib_ProcessNotifyLib#ifndef定義常量Consts#ifndefE_STATIC_LIBLIB_CONST_INFOConsts[]/*{中文名稱,英文名稱,常量布局,常量等級(LVL_),參數(shù)類型(CT_),文本內(nèi)容,數(shù)值內(nèi)容}*/_WT("常量_ZERO"),_WT("ZERO"),NULL,LVL_SIMPLE,CT_NUM,NULL,0},//_WT("常量_TEST_WT("TESTNULLLVL_HIGH,CT_TEXTTESTNULL常量等級有//////參數(shù)類型有//sample://sample://sample:DataTypes#ifndefE_STATIC_LIB/*{中文名稱,英文名稱,數(shù)據(jù)描述,索引數(shù)量,命令索引,對象狀態(tài),圖標(biāo)索引,事件數(shù)量,事件指針,屬性數(shù)量,屬性指針,界面指針,元素?cái)?shù)量,元素指針}*/{_WT數(shù)據(jù)類型命令"),_WT("DatatypeCommand"),_WT測試數(shù)據(jù)類型命令。"),DatatypeCommandIndexs,NULL,0,0,NULL,0,NULL,NULL,0,NULL關(guān)于LIB_DATA_TYPE_INFO的解釋以及窗口型數(shù)據(jù)的定義都可參見開發(fā)文檔EXTERN_Cvoidmylib_函數(shù)名(PMDATA_INFpRetData,INTiArgCount,PMDATA_INFpRetDataCMD_INFOm_dtRetType為_SDT_NULL(即定義無返回值)時(shí),pRetData無效;iArgCountpArgInf#ifndefE_STATIC_LIBPFN_EXECUTE_CMDExecuteCommand[]=mylib_//staticconstchar*constCommandNames[]"mylib_函數(shù)名ARG_INFOCommandArgs[]/*{參數(shù)名稱,參數(shù)描述,圖像索引,圖像數(shù)量,參數(shù)類型(SDT_),默認(rèn)數(shù)值,參數(shù)類別(AS_)}*/_WT("1"),_WT("1"),0,0,SDT_INTNULL,NULL函數(shù)參數(shù)數(shù)組定staticCMD_INFO/*{中文名稱,英文名稱,對象描述,所屬類別(-1是數(shù)據(jù)類型的方法),命令狀態(tài)(CT_),返回類型(SDT_),此值保留,對象等級(LVL_),圖像索引,圖像數(shù)量,參數(shù)個(gè)數(shù),參數(shù)信息{_WT("函數(shù)名"),_WT("英文函數(shù)名"),_WT("函數(shù)功能描述"),1,NULL,SDT_BOOL,0,LVL_SIMPLE,0,0,1,CommandArgs},//基本命令函數(shù)名前的前綴mylib_mylib的全小寫mylib_。參數(shù)類型如果 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。程序向?qū)Ю镌O(shè)置程序類型為"靜態(tài)庫"。去掉預(yù)編譯頭的鉤。點(diǎn)擊完成。選擇動(dòng)態(tài)庫列表中的文件,ctrl+Cmylib_staticctrl+Vmylib_static項(xiàng)目屬性,release配置。修改配置如下+->+->(resym.exe的工作C++->C++->->+->->D:\E51\sdk\tools\resym.exeallinfile=$(TargetPath)outfile=$(TargetPath)resym.exelib庫連接符號的,以解決連接時(shí)符號沖突的問題。程序位置設(shè)成你sdk所在位置。release編譯即可。打開項(xiàng)目管理,點(diǎn)擊配置管理器,mylib的配合處下拉菜單選擇新建",添入名稱release_static,+->+->C++->->_USRDLLC++->->+->->+生成事件->生成后事件->命令行填入你D:\E51\sdk\tools\resym.exeallinfile=$(TargetPath)outfile=$(TargetPath).lib"兩數(shù)相加",英文名稱是"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[]/*{參數(shù)名稱,參數(shù)描述,圖像索引,圖像數(shù)量,參數(shù)類型(SDT_),默認(rèn)數(shù)值,參數(shù)類別(AS_)}*/_WT("1_WT("1,小數(shù)型00SDT_FLOATNULLNULL函數(shù)參數(shù)數(shù)組_WT("2_WT("2,小數(shù)型00SDT_FLOATNULLNULL函數(shù)參數(shù)數(shù)組staticCMD_INFO/*{中文名稱,英文名稱,對象描述,所屬類別(-1是數(shù)據(jù)類型的方法),命令狀態(tài)(CT_),返回類型(SDT_),此值保留,對象等級(LVL_),圖像索引,圖像數(shù)量,參數(shù)個(gè)數(shù),參數(shù)信息{_WT兩數(shù)相加"),_WT("myadd"),_WT兩個(gè)小數(shù)相加求和,返回小數(shù)"),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串號,主版本號,次版本號,構(gòu)建版本號,系統(tǒng)主版本號,系統(tǒng)次版本號,核心庫主版本號,核心庫次版本號,支持庫名,支持庫語言,支持庫描述,支持庫狀態(tài)作者姓名,郵政編碼,通信地址,電話號碼,傳真號碼,電子郵箱,主頁地址,其它信息,類型數(shù)量,類型指針,類別數(shù)量,命令類別,命令總數(shù),命令指針,命令入口,附加功能,功能描述,消息指針,超級模板,模板描述,常量數(shù)量,常量指針,外部文件}*/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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論