wince下的dll有4種:1.wince dll 2.mfc regular dll 3.mfc extension dll 4. resource dll
wince dll:匯出函式使用標準c介面,可被mfc或非mfc程式呼叫
mfc regular dll:是使用mfc建立,匯出函式也使用標準c介面,可以被mfc或非mfc程式呼叫
mfc extension dll:可以建立mfc派生類,只能被mfc應用程式呼叫
resource dll:包含共享資源,如圖示,位圖,選單等
以下乙個簡單的例子介紹wince dll的建立方法:
1.新建乙個基於wce dynamic-link library,工程名sampledll
2.工程嚮導選擇a ****** windows ce dll project或a dll that exports some symbols,選擇後者會有框架及匯出函式示例**.
3.框架生成後,dllmain是dll的入口函式.以下是乙個匯出函式的示例:
[c-sharp]view plain
copy
extern
"c"sampledll_api
void
testdll(
void
)
extern "c"是能被c檔案呼叫,sampledll_api實際上就是__declspec(dllexport),表示輸出.
在sampledll.h中有定義:
[c-sharp]view plain
copy
#ifdef sampledll_exports
#define sampledll_api __declspec(dllexport)
#else
#define sampledll_api __declspec(dllimport)
#endif
乙個簡單的dll就建立好了.在arm ce平台上測試ok,注意ce需要新增mfc元件,如果用mfc程式測試的話.
下面就是建立乙個應用程式來測試了,我們使用動態呼叫的方式,靜態呼叫比較簡單,在工程設定裡新增sampledll.lib庫即可.
2.宣告將要載入的dll的控制代碼和被呼叫函式型別
[c-sharp]view plain
copy
hinstance m_hdll;
typedef void
(*ptestdll)(
void
);
3.新增兩個按鈕loaddll和freedll,按鈕執行函式如下:
[c-sharp]view plain
copy
void
csampledlltestmfcdlg::onloaddll()
ptestdll m_ptestdll = (ptestdll)getprocaddress(m_hdll,_t("testdll"
));
if(m_ptestdll == null)
else
} void
csampledlltestmfcdlg::onfreedll()
}
用到了3個api,loadlibrary用來載入dll,getprocaddress來獲得匯出函式指標,freelibrary用來釋放dll
mfc regular dll的建立方法基本類似,不同的是在每個dll匯出函式都應該先呼叫
afx_manage_state(afxgetstaticmodulestate());
應用程式呼叫的方法和上面的方法一樣.
mfc extesion dll用來匯出類,最後在類名前新增afx_ext_class關鍵字.
C Builder建立及呼叫DLL
動態鏈結庫 dll 是windows程式設計常遇到的程式設計方法,下面我就介紹一下在 bcb c builder下簡稱bcb 中如何建立使用dll和一些技巧。一 建立 使用bcb file new建立乙個新的dll工程,並儲存好檔案bcb,生成乙個dll 的程式框架。1 dllentrypoint函...
VC中DLL的建立及呼叫方法
dll的建立 首先,用vc整合開發介面中的 新建 新建乙個專案。無論是vc6.0還是vc.net,都有建立dll專案的選項。只不過有些稍有不同,例如vc.net中就有isapi dll,擴充套件儲存過程dll等,這些都不在討論的範圍。例如我們建立了乙個用靜態連線mfc庫的dll專案,名稱為mydll...
VC中DLL的建立及呼叫方法
此中只有實際才操作,而無相關理論 首先,用 vc整合開發介面中的 新建 新建乙個專案。無論是 vc6.0 還是vc.net 都有建立 dll專案的選項。只不過有些稍有不同,例如 vc.net 中就有isapi dll 擴充套件儲存過程 dll等,這些都不在討論的範圍。例如我們建立了乙個用靜態連線 m...