MFC規則DLL 概述

 
MFC規則DLL的概念體現在兩方面:
  (1) 它是MFC的
               “是MFC的”意味着可以在這種DLL的內部使用MFC;
  (2) 它是規則的
            “是規則的”意味着它不同於MFC擴展DLL,在MFC規則DLL的內部雖然可以使用MFC,但是其與應用程序的接口不能是MFC。而MFC擴展DLL與應用程序的接口可以是MFC,可以從MFC擴展DLL中導出一個MFC類的派生類。

  Regular DLL能夠被所有支持DLL技術的語言所編寫的應用程序調用,當然也包括使用MFC的應用程序。在這種動態連接庫中,包含一個從CWinApp繼承下來的類,DllMain函數則由MFC自動提供。

  Regular DLL分爲兩類:
  (1)靜態鏈接到MFC 的規則DLL
      靜態鏈接到MFC的規則DLL與MFC庫(包括MFC擴展 DLL)靜態鏈接,將MFC庫的代碼直接生成在.dll文件中。在調用這種DLL的接口時,MFC使用DLL的資源。因此,在靜態鏈接到MFC 的規則DLL中不需要進行模塊狀態的切換。

  使用這種方法生成的規則DLL其程序較大,也可能包含重複的代碼。
  (2)動態鏈接到MFC 的規則DLL
          動態鏈接到MFC 的規則DLL 可以和使用它的可執行文件同時動態鏈接到 MFC DLL 和任何MFC擴展 DLL。在使用了MFC共享庫的時候,默認情況下,MFC使用主應用程序的資源句柄來加載資源模板。這樣,當DLL和應用程序中存在相同ID的資源時(即所謂的資源重複問題),系統可能不能獲得正確的資源。因此,對於共享MFC DLL的規則DLL,我們必須進行模塊切換以使得MFC能夠找到正確的資源模板。
我們可以在Visual C++中設置MFC規則DLL是靜態鏈接到MFC DLL還是動態鏈接到MFC DLL。如圖8,依次選擇Visual C++的project -> Settings -> General菜單或選項,在Microsoft Foundation Classes中進行設置。
發佈了19 篇原創文章 · 獲贊 3 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章