一、DLL的工作方式
加載時動態鏈接,也叫早期綁定;
運行時動態鏈接,也叫晚期綁定;
二、DLL並不是多個應用程序之間共享類和函數的唯一方式。COM提供了另外一種創建可重用組件組件的方式,這種方式功能更爲強大。COM的使用相當複雜,但是ATL(活動模板庫)可以使得COM編程比較容易,而ATL是一種基於模板的類庫。
三、可以在DLL中定義一個靜態全局變量,包括C++對象,使用DLL的程序可以使用這些變量。在創建全局靜態類對象時,將自動調用這些對象的構造函數。注意:使用DLL的每個程序都將在這個DLL內定義它自己的靜態全局對象,儘管程序不一定使用它們。對於全局類對象來說,這涉及爲每個對象調用構造函數時產生的系統開銷。因此,除非絕對需要,否則應當避免把這樣的對象引入DLL。
四、函數、類、全局靜態變量和資源都可以從DLL導出,它們構成了DLL的接口。
五、DllMain()函數---DLL調用前和調用完之後都要調用DllMain函數
儘管DLL不像獨立程序那樣是可執行的,但是它包含一種特殊的main函數,稱作DllMain()函數。
1)第一次把DLL加載到內存中時,Windows將調用這個函數,從而允許DLL在其內容被使用前進行必要的初始化工作。
2)Windows在內存中刪除DLL之前也要調用DllMain()函數,以支持DLL在必要時清理自己。
六、擴展DLL是利用MFC的共享版本創建的,所以在使用擴展DLL時候,MFC的共享版必須可以使用。
由於擴展DLL中MFC共享版的基本性質,靜態連接到MFC的程序不能使用MFC擴展DLL。