




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。WINCE動態鏈接庫編程-WINCE動態鏈接庫編程動態鏈接庫(DynamicLinkLibrary,DLL)是一些編譯過的可執行程序模塊,它不能夠直接運行,不能夠接收消息,包含代碼,數據,資源,能夠被可執行程序或者其他DLL調用來完成某種功能。DLL可以實現多個應用程序共享同一段代碼或資源,比如多個應用程序需要訪問同樣的功能,我們就將該功能以DLL的形式提供,這樣設備中只需存在一份該DLL即可,這樣也可以節省存儲空間,這也是使用DLL的一個明顯的優點。DLL的調用有兩種方式,靜態調用和動態調用。靜態調用
2、:使用Lib和header文件調用。Lib文件作為DLL的替代文件被編譯到應用程序項目中,當我們通過靜態鏈接方式編譯并生成應用程序時,應用程序中的調用函數與Lib文件中的導出符號相匹配,這些符號或者標識號進入到生成的.exe文件中。當加載應用程序的EXE文件時,所有被應用程序調用的DLL文件都將被加載到內存中。可執行程序直接通過函數名調用DLL的輸出函數。下面是一個CSDN博友(parngoo)文章中舉的一個例子(windows下),引用到這里,參考一下。#appendDllTest1.libtoProject-Settings-Link-Ojbect/librarymodules#inclu
3、destdafx.h#include#include.DllTest1Header.h#pragmacomment(lib,DllTest1.lib)intmain(intargc,char*argv)tulip();/只要這樣我們就可以調用dll里的函數了return0;動態調用:使用API函數(LoadLibrary或者AfxLoadLibrary(MFC)手工加載DLL,使用GetProcAddress函數獲取引入的函數,然后就可以調用DLL中引入的函數了。不再使用DLL時,使用FreeLibrary函數可以釋放加載的DLL。下面看一下這幾個函數在微軟MSDN中的解釋:2TheLoadL
4、ibraryfunctionmapsthespecifiedexecutablemoduleintotheaddressspaceofthecallingprocess.(LoadLibrary函數將指定的可執行程序模塊映射到被調用進程的地址空間)HMODULELoadLibrary(LPCTSTRlpFileName);參數lpFileName:指定DLL的文件名,如:“HDI_API.dll”返回值:成功返回DLL句柄,失敗返回NULL。TheGetProcAddressfunctionretrievestheaddressofanexportedfunctionorvariablefro
5、mthespecifieddynamic-linklibrary(DLL).(GetProcAddress用來獲取指定DLL導出的函數或者變量的地址接口)FARPROCGetProcAddress(HMODULEhModule,LPCSTRlpProcName);返回值:成功返回函數地址指針,失敗返回NULL。TheFreeLibraryfunctiondecrementsthereferencecountoftheloadeddynamic-linklibrary(DLL).Whenthereferencecountreacheszero,themoduleisunmappedfromthe
6、addressspaceofthecallingprocessandthehandleisnolongervalid.(FreeLibrary函數遞減加載的動態鏈接庫(DLL)的引用計數,當引用計數為零時,該DLL程序模塊將不再映射到被調用進程的地址空間,相應句柄也不在有效。)BOOLFreeLibrary(HMODULEhModule);3返回值:成功返回TRUE,失敗返回FALSE。補充一下:調用LoadLibrary函數時,其遵循如下順序去搜索DLL。1.exe文件所在的目錄。2進程的當前工作目錄。3Windows系統目錄。4Windows目錄。5列在Path環境變量中的一系列目錄。Wi
7、ndowsCE下幾種DLL的調用方法:一MFC常規DLL可以被MFC或者非MFC應用程序調用,分為動態調用和靜態調用。動態調用使用MFC的動態鏈接庫(即選擇“使用共享MFCDLL的規則DLL(D)”),靜態調用使用MFC的靜態鏈接版本(即選擇“帶靜態鏈接MFC的規則DLL(R)”)。圖示1.1調用之前先執行如下(示例)代碼初始化DLL:4/加載Dllm_hAAA=LoadLibrary(_T(XXX.dll);if(m_hAAA=NULL)AfxMessageBox(_T(加載DLL失敗!);returnFALSE;/得到Dll中相應的函數BBB地址m_pBBB=GetProcAddress(
8、m_hModule,_T(BBB);if(m_pXXX=NULL)AfxMessageBox(_T(獲取BBB函數失敗!);FreeLibrary(m_hAAA);returnFALSE;/得到Dll中相應的函數CCC地址m_pCCC=GetProcAddress(m_hModule,_T(CCC);if(m_pSetCallbackProcAddr=NULL)AfxMessageBox(_T(獲取CCC函數失敗);FreeLibrary(m_hModule);returnFALSE;.調用GetProcAddress函數將DLL中導出并且自己要用到的函數全部獲取出來。經過如上代碼的初始化,就可以在應用程序中,像調用本程序內部的其他函數一樣調用DLL中導出來的函數了。要注意在不用DLL的時候,使用FreeLibrary函數釋放DLL。5二WindowsCEDLL非MFC創建的DLL,可以被MFC和非MFC應用程序調用。靜態調用:1將XXX.dll,XXX.lib,XXX.h文件全部拷貝到應用程序的工程目錄下。2修改屬性中的“附加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國旋轉焊接機行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國施工估算軟件行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國數字化轉型咨詢提供服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國救護車擔架行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國摩托車管行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國推動遠程醫療(PTT)和移動醫療電信行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國擠壓管包裝行業市場現狀供需分析及投資評估規劃分析研究報告
- 行政管理與民俗文化試題及答案
- 2025-2030年中國護膚面膜行業市場深度調研及前景趨勢與投資研究報告
- 藥物代謝途徑分析的考題試題及答案
- 工程師評審代辦合同協議
- (二模)2025年深圳市高三年級第二次調研考試物理試卷(含標準答案)
- 物品置換合同協議
- 心力衰竭試題及答案
- 公安治安管理培訓
- 平面向量及其應用 章末題型歸納總結(基礎篇)(10大題型)原卷版-2024-2025學年高一數學(人教A版必修第二冊)
- 債權管理制度
- 運動營養學知到課后答案智慧樹章節測試答案2025年春黑龍江冰雪體育職業學院
- 【基于改進杜邦分析法的中國東方航空公司財務分析(數據圖表論文)13000字】
- 2025高級插花花藝師核心備考試題庫及答案(濃縮300題)
- 光伏發電站施工規范完整版2025年
評論
0/150
提交評論