国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
DLL編寫教程【轉(zhuǎn)
http://hi.baidu.com/130503/blog/item/496afe735d21c11a8601b0e0.html 【上】
http://hi.baidu.com/130503/blog/item/2d5a73cc422fff1600e928e0.html 【下】

》》》》內(nèi)容摘錄《《《《

中間的小結(jié)

牢記一點,說到底,DLL是對應C語言的動態(tài)鏈接技術(shù),在輸出C函數(shù)和變量時顯得方便快捷;而在輸出C++類、函數(shù)時需要通過各種手段,而且也并沒有完美的解決方案,除非客戶端也是c++。

記住,只有COM是對應C++語言的技術(shù)。

下面開始對各各問題一一小結(jié)。

顯式調(diào)用和隱式調(diào)用

何時使用顯式調(diào)用?何時使用隱式調(diào)用?我認為,只有一個時候使用顯式調(diào)用是合理的,就是當客戶端不是C/C++的時候。這時是無法隱式調(diào)用的。例如用VB調(diào)用C++寫的dll。(VB我不會,所以沒有例子)
Def和__declspec(dllexport)

其實def的功能相當于extern “C” __declspec(dllexport),所以它也僅能處理C函數(shù),而不能處理重載函數(shù)而__declspec(dllexport)和__declspec(dllimport)配合使用能夠適應任何情況,因此__declspec(dllexport)是更為先進的方法。所以,目前普遍的看法是不使用def文件,我也同意這個看法。


從其它語言調(diào)用DLL

從其它編程語言中調(diào)用DLL,有兩個最大的問題,第一個就是函數(shù)符號的問題,前面已經(jīng)多次提過了。這里有個兩難選擇,若使用extern “C”,則函數(shù)名稱保持不變,調(diào)用較方便,但是不支持函數(shù)重載等一系列c++功能;若不使用extern “C”,則調(diào)用前要查看編譯后的符號,非常不方便。

第二個問題就是函數(shù)調(diào)用壓棧順序的問題,即__cdecl和__stdcall的問題。__cdecl是常規(guī)的C/C++調(diào)用約定,這種調(diào)用約定下,函數(shù)調(diào)用后棧的清理工作是由調(diào)用者完成的。__stdcall是標準的調(diào)用約定,即這些函數(shù)將在返回到調(diào)用者之前將參數(shù)從棧中刪除。

這兩個問題DLL都不能很好的解決,只能說湊合著用。但是在COM中,都得到了完美的解決。所以,要在Windows平臺實現(xiàn)語言無關(guān)性,還是只有使用COM中間件。

總而言之,除非客戶端也使用C++,否則dll是不便于支持函數(shù)重載、類等c++特性的。DLL對c函數(shù)的支持很好,我想這也是為什么windows的函數(shù)庫使用C加dll實現(xiàn)的理由之一。

在VC中編寫DLL

在VC中創(chuàng)建、編譯、鏈接dll是非常方便的,點擊fileàNewàProjectàWin32 Dynamic-Link Library,輸入dll名稱dll_InVC然后點擊確定。然后選擇A DLL that export some symbols,點擊Finish。即可得到一個完整的DLL。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
DLL編寫教程
使用c 開發(fā)excel插件 (第3章動態(tài)鏈接庫(dynamic
Visual?Studio下建立并顯示調(diào)用自己的動態(tài)鏈接庫dll
c++生成dll
C 編程筆記:dll的生成與使用
【引用】
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服