1. 程式人生 > >VC6.0建立DLL動態連結庫四大要素

VC6.0建立DLL動態連結庫四大要素

要成功地編輯,編譯和連結一個動態連結庫,應該包括以下要素:建立工程檔案,使用輸出說明,應用初始化函式和編制函式功能。

1.       建立工程檔案

在選取型別的時候要選擇“Dynamic __Link Library”或者“MFC AppWizard(DLL)”。

2.使用輸出說明

   對DLL要輸出的函式或者變數必須進行明確的說明。方法有兩種,第一種是使用副檔名為def的模組定義檔案,將要輸出的函式以及變數放在該檔案的export部分:

  /////////////////////////////////////////////////////////////////////////////////

 EXPORTS

Function @1

Function @2

  ////////////////////////////////////////////////////////////////////////////////

其中@1、@2是指輸出順序號。

另一種方法是使用擴充套件儲存器屬性__declspec(dllexport),這種方法的優點是無需使用單獨的DEF檔案,只需在函式說明以及原型前面加上__declspec(dllexport)即可。例如輸出函式caller();

///////////////////////////////////////////////////////////////////////////

__declspec(dllexport) void caller(char *p);

__declspec(dllexport) void caller(char *p)

{

printf(“This is a caller”);

}

///////////////////////////////////////////////////////////////////////////

使用擴充套件貯存器屬性說明的方法有不足之處,就是無法設定順序號,無法說明私有屬性,以及不便在說明中更改動態連結庫的名稱。

3.       應用初始化函式

DLL模組的呼叫和釋放都是通過DllMain函式,所有的初始化和退出處理都是在這個函式中。如果不需要初始化和退出處理,可以不要這個函式,編譯程式自動提供一個什麼都不幹的DllMain函式。DllMain函式的引數及結構如下:

DllMain(HANDLE hMoudle, DWORD fdwReason, LPVOID lpReserved)

這裡函式名和引數型別都是固定的。函式根據fdwReason值來確定幹什麼,是初始化還是退出。

4.       編制功能函式

功能函式是指實現DLL要完成的功能的函式。它是一般的C、C++函式,只是要加上輸出說明(如果要作為DLL輸出函式的話)。