日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC DLL 的三种类型

發布時間:2024/9/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC DLL 的三种类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
a、Non-MFC DLL:指的是不用MFC的類庫結構,直接用C語言寫的DLL,其輸出的函數一般用的是標準C接口,并能被非MFC或MFC編寫的應用程序所調用。?

b、Regular(常規) DLL:和下述的Extension Dlls一樣,是用MFC類庫編寫的。明顯的特點是在源文件里有一個繼承CWinApp的類。其又可細分成靜態連接到MFC和動態連接到MFC上的。?

靜態連接到MFC的動態連接庫只被VC的專業版和企業版所支持。該類DLL應用程序里頭的輸出函數可以被任意Win32程序使用,包括使用MFC的應用程序。輸入函數有如下形式:?
extern "C" EXPORT YourExportedFunction( );?
如果沒有extern “C”修飾,輸出函數僅僅能從C++代碼中調用。?
DLL應用程序從CWinApp派生,但沒有消息循環。?

動態鏈接到MFC的規則DLL應用程序里頭的輸出函數可以被任意Win32程序使用,包括使用MFC的應用程序。但是,所有從DLL輸出的函數應該以如下語句開始:?
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))?
此語句用來正確地切換MFC模塊狀態。?

Regular DLL能夠被所有支持DLL技術的語言所編寫的應用程序所調用。在這種動態連接庫中,它必須有一個從CWinApp繼承下來的類,DllMain函數被MFC所提供,不用自己顯式的寫出來。?

c、Extension DLL:用來實現從MFC所繼承下來的類的重新利用,也就是說,用這種類型的動態連接庫,可以用來輸出一個從MFC所繼承下來的類。它輸出的函數僅可以被使用MFC且動態鏈接到MFC的應用程序使用。可以從MFC繼承你所想要的、更適于你自己用的類,并把它提供給你的應用程序。你也可隨意的給你的應用程序提供MFC或MFC繼承類的對象指針。Extension DLL使用MFC的動態連接版本所創建的,并且它只被用MFC類庫所編寫的應用程序所調用。Extension DLLs 和Regular DLLs不一樣,它沒有一個從CWinApp繼承而來的類的對象,所以,你必須為自己DllMain函數添加初始化代碼和結束代碼。?

和規則DLL相比,有以下不同:?

1、它沒有一個從CWinApp派生的對象;?
2、它必須有一個DllMain函數;?
3、DllMain調用AfxInitExtensionModule函數,必須檢查該函數的返回值,如果返回0,DllMmain也返回0;?
4、如果它希望輸出CRuntimeClass類型的對象或者資源(Resources),則需要提供一個初始化函數來創建一個CDynLinkLibrary對象。并且,有必要把初始化函數輸出;?
5、使用擴展DLL的MFC應用程序必須有一個從CWinApp派生的類,而且,一般在InitInstance里調用擴展DLL的初始化函數。

總結

以上是生活随笔為你收集整理的MFC DLL 的三种类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。