青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

總結下C++中模塊(Dll)對外暴露接口的方式:

(1)導出API函數的方式

這種方式是Windows中調用DLL接口的最基本方式,GDI32.dll, User32.dll都是用這種方式對外暴露系統API的。
這種方式的優點是導出函數沒有語言限制,什么語言都能調用;
缺點是這種方式是面向過程的,外部如果要支持多實例等不是很方便,另外它要求的回調函數(callback)只能是普通C函數,C++中我們通常用類靜態成員函數,很不方便。
當然,我們通過封裝其實也可以讓這種方式支持多實例,通過一個抽象句柄HComponent, 比如支持導出函數HComponent CreateInstance(); VOID DeleteInstance(HComponent h);然后內部的其他導出函數的第一個參數都是實例句柄,類似INT SendMessage(HComponent h, ...), 用這種方式可以模擬出面向對象的效果。
另外如果用動態加載(LoadLibrary, GetProcAddress)的方式調用它的導出函數,即使導出函數內部實現修改了,外部程序也不用重新編譯,仍然可用。
導出函數方式一個比較優秀的例子是GDI+的實現,整個GdiPlus.dll對外提供的都是普通導出函數,但是它卻可以方便的給面向對象的語言使用,因為一方面它用Handle的方式在DLL內部封裝了對象,另一方面它在DLL外圍又用C++類的方式封裝了頭文件直接提供給用戶, 所以C++程序可以直接以面向對象的方式調用。

(2)導出類方式
導出類的方式就是把整個C++類對外導出, MFC42.dll就是這種方式。
這種方式的優點是直接面向對象。
缺點是只能給C++用,而且最好編譯器都要一致,另外DLL一變動, 外部程序需要重新編譯, 而且外部程序可以通過頭文件看到你類的內部實現,
所以這種方式是最不建議使用的方式。

(3)COM方式
COM方式實際上導出了幾個固定函數(DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer), 然后以這幾個函數為入口,調用組件內部‘實現的接口。
COM方式綜合了上面2種方法的所有優點,沒有語言限制,面向對象,多實例,只能看到接口,動態升級等。
當然COM因為其復雜性和對注冊表的依賴,很多時候我們在封裝模塊時不愿意嚴格按照COM標準來實現,但是我們可以按照COM思想來提供接口。
比如我們可以讓我們模塊只提供一個導出函數CreateFactory, 然后外部可以調用該接口來創建工廠,最后通過工廠創建出各種類型的對象,這些對象實現了某些接口,外部只需要這些接口的頭文件即可調用對象的方法。
現在越來越多的組件以這種方式對外提供接口,比如D2D對外的導出接口就是D2D1CreateFactory, 然后就可以通過該工廠來創建其他的對象,比如pD2DFactory->CreateHwndRenderTarget(...),最后可以直接調用對象實現的接口:pRenderTarget->DrawRectangle(D2D1::RectF(100.f, 100.f, 500.f, 500.f), pBlackBrush);

當然,上面幾種DLL對外暴露接口的方式本質上沒有區別,都是利用PE文件的導出節來導出數據和函數,但是根據它們使用方式的不同,對外部模塊來說還是有很大的區別,我們的推薦次序依次是:COM方式->導出API函數方式->導出類方式。
posted on 2012-08-29 18:58 Richard Wei 閱讀(4325) 評論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区高清不卡| 亚洲一二三区视频在线观看| 日韩小视频在线观看专区| 午夜在线视频一区二区区别| 亚洲国产精品久久久| 亚洲一区二区三区在线看| 欧美另类一区二区三区| 亚洲日韩中文字幕在线播放| 免费成人av资源网| 欧美亚洲一区二区三区| 国产日韩久久| 久久精品99国产精品日本| 午夜精品短视频| 国产欧美一区二区视频| 国产情人节一区| 免费不卡中文字幕视频| 黄色av成人| 欧美777四色影视在线| 久久精品一区二区| 一区二区在线观看av| 久久午夜影视| 蜜臀a∨国产成人精品| 最新高清无码专区| 亚洲欧洲日夜超级视频| 欧美性猛交xxxx乱大交退制版| 亚洲欧美激情视频| 亚洲欧美日韩精品久久久| 激情久久婷婷| 91久久精品美女高潮| 欧美日韩情趣电影| 性色av香蕉一区二区| 欧美一区二区三区免费大片| 一区二区在线不卡| 亚洲狼人综合| 国产日韩亚洲欧美| 欧美成人dvd在线视频| 欧美精品123区| 亚洲欧美日韩中文视频| 欧美在线影院| 亚洲精品国产拍免费91在线| 99精品国产在热久久| 国产欧美大片| 亚洲国产老妈| 国产伦精品一区二区三| 欧美二区在线观看| 欧美少妇一区| 免费日韩av电影| 欧美日韩一区二区三区| 久久免费国产精品| 欧美日韩一区二区视频在线| 久久久www成人免费毛片麻豆| 另类av一区二区| 亚洲综合成人婷婷小说| 久久免费少妇高潮久久精品99| 亚洲精一区二区三区| 亚洲欧美久久久久一区二区三区| 亚洲第一黄色| 亚洲制服丝袜在线| 日韩天天综合| 久久国产精品网站| 亚洲一本视频| 欧美福利视频在线观看| 久久精品成人一区二区三区| 欧美经典一区二区| 免费不卡视频| 国产日韩1区| 亚洲九九精品| 亚洲激情av在线| 欧美一级夜夜爽| 亚洲亚洲精品三区日韩精品在线视频 | 久久99在线观看| 一区二区三区视频在线| 久久婷婷一区| 久久久蜜桃一区二区人| 国产精品久久久久久久电影| 亚洲精品欧洲| 亚洲精品小视频在线观看| 一色屋精品视频在线观看网站| 亚洲视频成人| 一区二区三区日韩精品| 免费观看成人| 免费人成网站在线观看欧美高清 | 一本色道久久综合亚洲二区三区| 久久精品视频播放| 久久精品成人一区二区三区| 国产精品久久二区二区| 日韩视频亚洲视频| 一区二区日韩精品| 欧美日韩成人综合| 亚洲精品一区二区三区av| 亚洲美女电影在线| 欧美高潮视频| 亚洲福利国产| 亚洲国产欧美一区| 男人天堂欧美日韩| 亚洲欧洲视频| 中文亚洲欧美| 国产精品毛片大码女人| 亚洲欧美日韩天堂一区二区| 久久国产婷婷国产香蕉| 国产一区二区av| 久久久成人网| 亚洲国产精品传媒在线观看| 亚洲三级观看| 欧美日韩在线不卡一区| 亚洲一区影音先锋| 久久蜜桃香蕉精品一区二区三区| 黑人操亚洲美女惩罚| 美女视频网站黄色亚洲| 亚洲久久视频| 欧美在线亚洲一区| 亚洲电影第三页| 欧美精品在线网站| 亚洲尤物影院| 欧美1区2区| 亚洲素人在线| 国产一区二区三区久久精品| 久久夜色撩人精品| 亚洲卡通欧美制服中文| 欧美一区二区三区男人的天堂| 国内揄拍国内精品少妇国语| 欧美freesex交免费视频| 99视频超级精品| 久久色在线播放| aa级大片欧美三级| 国产日韩一级二级三级| 美女诱惑一区| 在线亚洲一区观看| 久久尤物视频| 亚洲午夜精品福利| 伊人久久大香线蕉综合热线| 欧美精品亚洲二区| 欧美一区午夜视频在线观看| 亚洲国产成人一区| 久久国产精品久久w女人spa| 亚洲国产精品女人久久久| 欧美日韩亚洲综合| 久久久蜜桃精品| 亚洲视频一二| 亚洲国产精品一区二区尤物区 | 久久久久久自在自线| 一本色道久久综合一区| 欧美不卡福利| 洋洋av久久久久久久一区| 亚洲天堂av在线免费| 精品999在线播放| 欧美天天视频| 免费不卡中文字幕视频| 亚洲欧美日韩一区二区三区在线观看| 欧美福利精品| 久久久av网站| 午夜精品一区二区三区四区| 亚洲精品久久久蜜桃| 国产一区美女| 国产噜噜噜噜噜久久久久久久久| 欧美激情亚洲视频| 久久人人爽人人爽| 欧美一区二区免费观在线| 日韩网站在线看片你懂的| 免费成人av在线看| 久久精品伊人| 欧美中文字幕在线视频| 亚洲自拍高清| 亚洲午夜精品久久久久久浪潮| 亚洲精品美女久久久久| 亚洲国产一区视频| 亚洲国产精品123| 亚洲国产精品一区二区第四页av | 亚洲日本无吗高清不卡| 欧美1级日本1级| 久久综合国产精品| 久久九九99| 久久电影一区| 久久狠狠一本精品综合网| 欧美淫片网站| 久久久久久**毛片大全| 欧美中文在线观看| 久久九九久久九九| 久久阴道视频| 欧美黄免费看| 最新亚洲一区| 日韩一区二区精品| 一本色道久久综合| 亚洲视频一区二区免费在线观看| 中日韩视频在线观看| 亚洲女同性videos| 久久不射网站| 久久综合婷婷| 欧美激情国产精品| 欧美日韩亚洲一区二区三区在线| 欧美日韩一区不卡| 国产乱肥老妇国产一区二| 国内免费精品永久在线视频| 黄色成人免费网站| 91久久精品一区二区别| 日韩视频中午一区| 校园春色国产精品| 免费成人美女女| 亚洲欧洲免费视频| 中文av字幕一区|