国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語言 - C/C++ - VC6.0如何創(chuàng)建以及調(diào)用動(dòng)態(tài)鏈接庫(kù)實(shí)例詳解

VC6.0如何創(chuàng)建以及調(diào)用動(dòng)態(tài)鏈接庫(kù)實(shí)例詳解

2020-11-16 15:36C++教程網(wǎng) C/C++

作為客戶與后臺(tái)的中介,為了更好的調(diào)節(jié)兩方的關(guān)系,我明智滴選擇了webservice以及動(dòng)態(tài)鏈接庫(kù)。在與客戶c++使動(dòng)態(tài)鏈接庫(kù)方式,而與后臺(tái)java,使用webservice來交流溝通

小弟在公司的職責(zé),在上篇博客中已經(jīng)簡(jiǎn)約介紹。這邊博客主要介紹技術(shù)的應(yīng)用而不在細(xì)究原理。因?yàn)楣卷?xiàng)目著急,出結(jié)果要緊,并且咱也不是專注搞研究的,所以,基本懂了原理后,直接上手工作,搞出demo來最好。

至于公司工作情況,今天暫且略過,當(dāng)然也不是一兩句能夠表達(dá)清楚的。后面會(huì)有相應(yīng)的工作總結(jié),敬請(qǐng)期待……

現(xiàn)在,廢話少說,直奔主題——VC6.0中創(chuàng)建動(dòng)態(tài)鏈接庫(kù)。
作為客戶與后臺(tái)的中介,為了更好的調(diào)節(jié)兩方的關(guān)系,我明智滴選擇了webservice以及動(dòng)態(tài)鏈接庫(kù)。在與客戶c++使動(dòng)態(tài)鏈接庫(kù)方式,而與后臺(tái)java,使用webservice來交流溝通。
既然有了動(dòng)態(tài)鏈接庫(kù),肯定大家會(huì)想到靜態(tài)鏈接庫(kù)。呵呵,這個(gè)是相對(duì)的。那這兩者有什么區(qū)別呢?那又為什么選擇了動(dòng)態(tài)鏈接庫(kù)呢?
靜態(tài)鏈接庫(kù):是把lib文件也打包到了exe文件中。
動(dòng)態(tài)鏈接庫(kù):沒有把lib文件打包到exe文件中,若是使用,則直接加載卸載相應(yīng)的dll文件。
并且,靜態(tài)鏈接庫(kù)中不允許包含靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù),而動(dòng)態(tài)鏈接庫(kù)中是允許包含靜態(tài)鏈接庫(kù)和動(dòng)態(tài)鏈接庫(kù)的。因?yàn)樾〉芊庋b的dll中是調(diào)用客戶的dll,并且有可能包含另外自己的動(dòng)態(tài)鏈接庫(kù)。
鑒于此,小弟選擇了動(dòng)態(tài)鏈接庫(kù)。
還有一點(diǎn)是,動(dòng)態(tài)鏈接庫(kù),也是分為三種情況的。一是非MFC的dll(也就是控制臺(tái)的dll),二是常規(guī)的MFC的dll(其中又分靜態(tài)的dl和共享的dll),三是擴(kuò)展的MFC 的dll。并且MFC的dll可以被MFC程序或者控制臺(tái)程序調(diào)用。
因?yàn)樾〉芊庋b的dll,需要供MFC程序調(diào)用,所以選擇使用了MFC常規(guī)的dll。并且使用控制臺(tái)程序做測(cè)試。
首先,在新建工程中選擇MFC AppWizard (dll)
然后在頭.h文件中,聲明被外界調(diào)用的函數(shù)

復(fù)制代碼 代碼如下:


extern "C" _declspec(dllexport) char* queryFunctionByFID(char* funcId);


聲明后,在cpp文件中,實(shí)現(xiàn)此函數(shù)。

復(fù)制代碼 代碼如下:


char* queryFunctionByFID(char* funcId)
{
…………………………
具體的操作實(shí)現(xiàn)}


編譯,build生成。OK,在Debug下生成相應(yīng)的dll,至此動(dòng)態(tài)鏈接庫(kù)生成了。然后程序就可以直接使用此dll文件了。
然后呢。把dll文件copy到相應(yīng)的測(cè)試dll程序(調(diào)用dll的程序)下。使用方式如下:
我測(cè)試dll程序中,是使用的控制臺(tái)程序,這樣簡(jiǎn)單方便,當(dāng)然使用MFC程序也可以。
比如:我們新建一個(gè)控制臺(tái)程序,然后在main方法中,寫如下:

復(fù)制代碼 代碼如下:


//聲明函數(shù)指針 寫明函數(shù)參數(shù)個(gè)數(shù),參數(shù)類型以及返回值類型
typedef char* (* queryFunctionByFID)(char*);
//加載動(dòng)態(tài)鏈接庫(kù),返回DLL文件的句柄
HINSTANCE hDLL=NULL;
//加載動(dòng)態(tài)鏈接庫(kù),dll名稱要與剛才生成的dll名稱保持一致。
hDLL=LoadLibrary("IProcessInstIn.dll");
queryFunctionByFID saveProcess=NULL;
//加載動(dòng)態(tài)鏈接庫(kù)中相應(yīng)的函數(shù)
saveProcess=(queryFunctionByFID)GetProcAddress(hDLL,"queryFunctionByFID");
//真正的調(diào)用相應(yīng)的函數(shù)
cout<<"結(jié)果是:"<<saveProcess("dd");
//調(diào)用完畢后釋放資源
FreeLibrary(hDLL);


每一句的作用,注釋已經(jīng)表達(dá)清楚。若是有不懂的,可以聯(lián)系我,互相交流一下。
其實(shí),動(dòng)態(tài)鏈接庫(kù),類似我們VS中的dll,只不過,當(dāng)時(shí)只要把dll引用到相應(yīng)的程序,然后直接可以使用。而在此,是我們手動(dòng)加載,連接,釋放dll。使用這種方式的動(dòng)態(tài)鏈接庫(kù),我們可以很隨意在我們程序中的任何地方都可以使用我們想調(diào)用的函數(shù)。
只要我們遵守了“加載,LoadLibrary——GetProcAddress——FreeLibrary”原則即可。使用相當(dāng)方便。即可解脫了兩者之間耦合的困擾,又可以加載釋放方便。
調(diào)用靜態(tài)鏈接庫(kù)的做法如下
第一:把lib文件和dll文件兩個(gè)文件全部放在客戶端下,調(diào)用動(dòng)態(tài)鏈接庫(kù)時(shí),只需要dll文件。
第二:在客戶端中需要新建頭文件,類似dll中的導(dǎo)出函數(shù)的頭文件。
第三:在客戶端調(diào)用dll文件中(cpp文件),添加預(yù)指令,也就是把lib文件顯式加載進(jìn)來。
如:#pragma comment (lib,"IProcessInstIn.dll")
第四:在button事件下,直接調(diào)用相應(yīng)的方法。
如:cout<<"結(jié)果是:"<<queryFunctionByFID(相應(yīng)的參數(shù));
總之,調(diào)用靜態(tài)鏈接庫(kù),相對(duì)于來說,比較簡(jiǎn)單,只要把相應(yīng)的文件加載進(jìn)來后,直接調(diào)用方法即可。但是調(diào)用動(dòng)態(tài)鏈接庫(kù)相對(duì)來說,比較靈活,何時(shí)使用何時(shí)加載,不使用了直接卸載即可。
任何事物都有優(yōu)缺點(diǎn),我們呢,就是充分利用他們的優(yōu)點(diǎn),在不同的場(chǎng)合不同的需求下使用不同的方式。
剛才我們?cè)谏蒬ll時(shí),使用Debug版本下的dll,既然有可以選擇Debug版本,根據(jù)我們的思維,肯定會(huì)想到,存在另外的版本。下篇博客中,我們會(huì)介紹一下Debug版本下的動(dòng)態(tài)鏈接庫(kù)和另一個(gè)版本Release版本下的動(dòng)態(tài)鏈接庫(kù)的區(qū)別,以及何時(shí)何地選擇何種版本。

延伸 · 閱讀

精彩推薦
559
主站蜘蛛池模板: 国产精品久久久久精 | 欧美中文字幕在线观看 | 久久久精品网 | 午夜精品网站 | 夜夜操av| 成人黄色免费 | 精品三级 | 黄色三级免费网站 | 国产精品久久久久久99999 | 亚洲国产高清高潮精品美女 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产一区二区三区久久 | 日韩有码在线播放 | 久久免费精品国产 | 精品免费久久久久久久苍 | 亚洲精品久久久久久久久久久久久 | av毛片免费看 | 噜噜噜在线 | 午夜在线电影 | 福利在线播放 | 一区二区在线视频 | 久久这里只有精品8 | 精品国产欧美一区二区 | av在线精品 | 国产精品欧美久久久久一区二区 | 久久久午夜爽爽一区二区三区三州 | 成人免费的视频 | 日韩中文字幕在线免费观看 | 欧美激情网址 | 欧美成年黄网站色视频 | 久久天天 | 中文字幕国产视频 | 亚洲一区二区在线播放 | 黑人精品欧美一区二区蜜桃 | 素人av在线 | 久久久久成人精品免费播放动漫 | 欧美成人一区二区 | 天堂av资源 | 亚洲精品视频网站在线观看 | 天天艹| 粉嫩视频在线观看 |