亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 如何在vc++6_0中使用動態(tài)連接庫中級樂園編程技術(shù)it與數(shù)碼uum社區(qū).htm

?? 從網(wǎng)上下載的關(guān)于學(xué)習(xí)動態(tài)鏈接庫的連載教程
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
                    <TR vAlign=top height=100>
                      <TD style="WIDTH: 600px; WORD-BREAK: break-all" 
                        colSpan=3><SPAN 
                        id=lblSubjectContents>動態(tài)鏈接庫的創(chuàng)建<BR>&gt;&gt;&gt;&gt;在Visual 
                        C++6.0開發(fā)環(huán)境下,打開FileNewProject選項,可以選擇Win32 Dynamic-Link 
                        Library或MFC AppWizard[dll]來以不同的方式來創(chuàng)建Non-MFC Dll、Regular 
                        Dll、Extension Dll等不同種類的動態(tài)鏈接庫。<BR>&gt;&gt;&gt;&gt;1. 
                        Win32 Dynamic-Link Library方式創(chuàng)建Non-MFC 
                        DLL動態(tài)鏈接庫<BR>&gt;&gt;&gt;&gt;每一個DLL必須有一個入口點,這就象我們用C編寫的應(yīng)用程序一樣,必須有一個WINMAIN函數(shù)一樣。在Non-MFC 
                        DLL中DllMain是一個缺省的入口函數(shù),你不需要編寫自己的DLL入口函數(shù),用這個缺省的入口函數(shù)就能使動態(tài)鏈接庫被調(diào)用時得到正確的初始化。如果應(yīng)用程序的DLL需要分配額外的內(nèi)存或資源時,或者說需要對每個進(jìn)程或線程初始化和清除操作時,需要在相應(yīng)的DLL工程的.CPP文件中對DllMain()函數(shù)按照下面的格式書寫。<BR>&gt;&gt;<BR>&gt;&gt;<BR>BOOL 
                        APIENTRY DllMain(HANDLE hModule,DWORD 
                        ul_reason_for_call,LPVOID lpReserved)<BR>{<BR>switch( 
                        ul_reason_for_call )<BR>{<BR>case 
                        DLL_PROCESS_ATTACH:<BR>.......<BR>case 
                        DLL_THREAD_ATTACH:<BR>.......<BR>case 
                        DLL_THREAD_DETACH:<BR>.......<BR>case 
                        DLL_PROCESS_DETACH:<BR>.......<BR>}<BR>return 
                        TRUE;<BR>}<BR><BR>&gt;&gt;&gt;&gt;參數(shù)中,hMoudle是動態(tài)庫被調(diào)用時所傳遞來的一個指向自己的句柄(實際上,它是指向_DGROUP段的一個選擇符);ul_reason_for_call是一個說明動態(tài)庫被調(diào)原因的標(biāo)志,當(dāng)進(jìn)程或線程裝入或卸載動態(tài)鏈接庫的時候,操作系統(tǒng)調(diào)用入口函數(shù),并說明動態(tài)鏈接庫被調(diào)用的原因,它所有的可能值為:DLL_PROCESS_ATTACH: 
                        進(jìn)程被調(diào)用、DLL_THREAD_ATTACH: 線程被調(diào)用、DLL_PROCESS_DETACH: 
                        進(jìn)程被停止、DLL_THREAD_DETACH: 
                        線程被停止;lpReserved為保留參數(shù)。到此為止,DLL的入口函數(shù)已經(jīng)寫了,剩下部分的實現(xiàn)也不難,你可以在DLL工程中加入你所想要輸出的函數(shù)或變量了。<BR>&gt;&gt;&gt;&gt;我們已經(jīng)知道DLL是包含若干個函數(shù)的庫文件,應(yīng)用程序使用DLL中的函數(shù)之前,應(yīng)該先導(dǎo)出這些函數(shù),以便供給應(yīng)用程序使用。要導(dǎo)出這些函數(shù)有兩種方法,一是在定義函數(shù)時使用導(dǎo)出關(guān)鍵字_declspec(dllexport),另外一種方法是在創(chuàng)建DLL文件時使用模塊定義文件.Def。需要讀者注意的是在使用第一種方法的時候,不能使用DEF文件。下面通過兩個例子來說明如何使用這兩種方法創(chuàng)建DLL文件。<BR>&gt;&gt;&gt;&gt;1)使用導(dǎo)出函數(shù)關(guān)鍵字_declspec(dllexport)創(chuàng)建MyDll.dll,該動態(tài)鏈接庫中有兩個函數(shù),分別用來實現(xiàn)得到兩個數(shù)的最大和最小數(shù)。在MyDll.h和MyDLL.cpp文件中分別輸入如下原代碼:<BR>&gt;&gt;<BR>//MyDLL.h<BR>extern 
                        'C' _declspec(dllexport) int Max(int a, int 
                        b);<BR>extern 'C' _declspec(dllexport) int Min(int a, 
                        int 
                        b);<BR>//MyDll.cpp<BR>#include<BR>#include'MyDll.h'<BR>int 
                        Max(int a, int b)<BR>{<BR>if(a&gt;=b)return 
                        a;<BR>else<BR>return b;<BR>}<BR>int Min(int a, int 
                        b)<BR>{<BR>if(a&gt;=b)return b;<BR>else<BR>return 
                        a;<BR>}<BR><BR>&gt;&gt;&gt;&gt;該動態(tài)鏈接庫編譯成功后,打開MyDll工程中的debug目錄,可以看到MyDll.dll、MyDll.lib兩個文件。LIB文件中包含DLL文件名和DLL文件中的函數(shù)名等,該LIB文件只是對應(yīng)該DLL文件的'映像文件',與DLL文件中,LIB文件的長度要小的多,在進(jìn)行隱式鏈接DLL時要用到它。讀者可能已經(jīng)注意到在MyDll.h中有關(guān)鍵字'extern 
                        C',它可以使其他編程語言訪問你編寫的DLL中的函數(shù)。<BR>&gt;&gt;&gt;&gt;2)用.def文件創(chuàng)建工程MyDll<BR>&gt;&gt;&gt;&gt;為了用.def文件創(chuàng)建DLL,請先刪除上個例子創(chuàng)建的工程中的MyDll.h文件,保留MyDll.cpp并在該文件頭刪除#include 
                        MyDll.h語句,同時往該工程中加入一個文本文件,命名為MyDll.def,再在該文件中加入如下代碼:<BR>LIBRARY 
                        MyDll<BR>EXPORTS<BR>Max<BR>Min<BR>&gt;&gt;&gt;&gt;其中LIBRARY語句說明該def文件是屬于相應(yīng)DLL的,EXPORTS語句下列出要導(dǎo)出的函數(shù)名稱。我們可以在.def文件中的導(dǎo)出函數(shù)后加@n,如Max@1,Min@2,表示要導(dǎo)出的函數(shù)順序號,在進(jìn)行顯式連時可以用到它。該DLL編譯成功后,打開工程中的Debug目錄,同樣也會看到MyDll.dll和MyDll.lib文件。<BR>&gt;&gt;&gt;&gt;2.MFC 
                        AppWizard[dll]方式生成常規(guī)/擴(kuò)展DLL<BR>&gt;&gt;&gt;&gt;在MFC 
                        AppWizard[dll]下生成DLL文件又有三種方式,在創(chuàng)建DLL是,要根據(jù)實際情況選擇創(chuàng)建DLL的方式。一種是常規(guī)DLL靜態(tài)鏈接到MFC,另一種是常規(guī)DLL動態(tài)鏈接到MFC。兩者的區(qū)別是:前者使用的是MFC的靜態(tài)鏈接庫,生成的DLL文件長度大,一般不使用這種方式,后者使用MFC的動態(tài)鏈接庫,生成的DLL文件長度小;動態(tài)鏈接到MFC的規(guī)則DLL所有輸出的函數(shù)應(yīng)該以如下語句開始: 
                        <BR>&gt;&gt;<BR>AFX_MANAGE_STATE(AfxGetStaticModuleState( 
                        )) 
                        //此語句用來正確地切換MFC模塊狀態(tài)<BR><BR>&gt;&gt;&gt;&gt;最后一種是MFC擴(kuò)展DLL,這種DLL特點是用來建立MFC的派生類,Dll只被用MFC類庫所編寫的應(yīng)用程序所調(diào)用。前面我們已經(jīng)介紹過,Extension 
                        DLLs 和Regular 
                        DLLs不一樣,它沒有一個從CWinApp繼承而來的類的對象,編譯器默認(rèn)了一個DLL入口函數(shù)DLLMain()作為對DLL的初始化,你可以在此函數(shù)中實現(xiàn)初始化,代碼如下:<BR>&gt;&gt;<BR>BOOL 
                        WINAPI APIENTRY DLLMain(HINSTANCE hinstDll,DWORD reason 
                        ,LPVOID 
                        flmpload)<BR>{<BR>switch(reason)<BR>{<BR>……………//初始化代碼;<BR>}<BR>return 
                        true;<BR>}<BR><BR>&gt;&gt;&gt;&gt;參數(shù)hinstDll存放DLL的句柄,參數(shù)reason指明調(diào)用函數(shù)的原因,lpReserved是一個被系統(tǒng)所保留的參數(shù)。對于隱式鏈接是一個非零值,對于顯式鏈接值是零。<BR>&gt;&gt;&gt;&gt;在MFC下建立DLL文件,會自動生成def文件框架,其它與建立傳統(tǒng)的Non-MFC 
                        DLL沒有什么區(qū)別,只要在相應(yīng)的頭文件寫入關(guān)鍵字_declspec(dllexport)函數(shù)類型和函數(shù)名等,或在生成的def文件中EXPORTS下輸入函數(shù)名就可以了。需要注意的是在向其它開發(fā)人員分發(fā)MFC擴(kuò)展DLL 
                        時,不要忘記提供描述DLL中類的頭文件以及相應(yīng)的.LIB文件和DLL本身,此后開發(fā)人員就能充分利用你開發(fā)的擴(kuò)展DLL了。<BR>四、動態(tài)鏈接庫DLL的鏈接<BR>&gt;&gt;&gt;&gt;應(yīng)用程序使用DLL可以采用兩種方式:一種是隱式鏈接,另一種是顯式鏈接。在使用DLL之前首先要知道DLL中函數(shù)的結(jié)構(gòu)信息。Visual 
                        C++6.0在VCin目錄下提供了一個名為Dumpbin.exe的小程序,用它可以查看DLL文件中的函數(shù)結(jié)構(gòu)。另外,Windows系統(tǒng)將遵循下面的搜索順序來定位DLL: 
                        1.包含EXE文件的目錄,2.進(jìn)程的當(dāng)前工作目錄, 3.Windows系統(tǒng)目錄, 
                        4.Windows目錄,5.列在Path環(huán)境變量中的一系列目錄。<BR>&gt;&gt;&gt;&gt;1.隱式鏈接<BR>&gt;&gt;&gt;&gt;隱式鏈接就是在程序開始執(zhí)行時就將DLL文件加載到應(yīng)用程序當(dāng)中。實現(xiàn)隱式鏈接很容易,只要將導(dǎo)入函數(shù)關(guān)鍵字_declspec(dllimport)函數(shù)名等寫到應(yīng)用程序相應(yīng)的頭文件中就可以了。下面的例子通過隱式鏈接調(diào)用MyDll.dll庫中的Min函數(shù)。首先生成一個項目為TestDll,在DllTest.h、DllTest.cpp文件中分別輸入如下代碼:<BR>&gt;&gt;<BR>&gt;&gt;<BR>//Dlltest.h<BR>#pragma 
                        comment(lib,'MyDll.lib')<BR>extern 
                        'C'_declspec(dllimport) int Max(int a,int b);<BR>extern 
                        'C'_declspec(dllimport) int Min(int a,int 
                        b);<BR>//TestDll.cpp<BR>#include<BR>#include'Dlltest.h'<BR>void 
                        main()<BR>{int a;<BR>a=min(8,10)<BR>printf('比較的結(jié)果為%d 
                        ',a);<BR>}<BR>&gt;&gt;<BR><BR>&gt;&gt;&gt;&gt;在創(chuàng)建DllTest.exe文件之前,要先將MyDll.dll和MyDll.lib拷貝到當(dāng)前工程所在的目錄下面,也可以拷貝到windows的System目錄下。如果DLL使用的是def文件,要刪除TestDll.h文件中關(guān)鍵字extern 
                        'C'。TestDll.h文件中的關(guān)鍵字Progam commit是要Visual 
                        C+的編譯器在link時,鏈接到MyDll.lib文件,當(dāng)然,開發(fā)人員也可以不使用#pragma 
                        comment(lib,'MyDll.lib')語句,而直接在工程的Setting-&gt;Link頁的Object/Moduls欄填入MyDll.lib既可。<BR>&gt;&gt;&gt;&gt;2.顯式鏈接<BR>&gt;&gt;&gt;&gt;顯式鏈接是應(yīng)用程序在執(zhí)行過程中隨時可以加載DLL文件,也可以隨時卸載DLL文件,這是隱式鏈接所無法作到的,所以顯式鏈

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一本大道在线| 精品国产乱码久久久久久免费| 91亚洲大成网污www| 欧美日韩成人在线| 中文字幕乱码一区二区免费| 日韩中文字幕av电影| 成人av先锋影音| 久久亚洲精华国产精华液| 亚洲国产视频网站| av成人动漫在线观看| 久久免费电影网| 免费在线成人网| 欧美日本在线播放| 亚洲男同性恋视频| 成人99免费视频| 精品福利av导航| 日本不卡1234视频| 欧美日本国产视频| 亚洲成人免费视| 欧美自拍丝袜亚洲| 亚洲夂夂婷婷色拍ww47| 成人黄色国产精品网站大全在线免费观看| 91精品免费观看| 五月婷婷激情综合网| 欧美在线三级电影| 一区二区三区四区av| 99精品一区二区| 亚洲国产精品成人综合色在线婷婷| 麻豆视频观看网址久久| 欧美精品亚洲二区| 亚洲成人免费在线观看| 欧美区一区二区三区| 亚洲影视在线播放| 欧美日韩极品在线观看一区| 亚洲国产色一区| 欧美性高清videossexo| 亚洲第一搞黄网站| 欧美蜜桃一区二区三区| 午夜免费欧美电影| 欧美精品电影在线播放| 日韩成人精品在线观看| 日韩一本二本av| 久久99国内精品| 久久久亚洲午夜电影| 国产suv精品一区二区6| 成人免费视频在线观看| 色香色香欲天天天影视综合网| 亚洲丝袜自拍清纯另类| 色就色 综合激情| 亚洲成a天堂v人片| 欧美日本韩国一区| 国产一区高清在线| 国产精品三级久久久久三级| 99精品在线免费| 亚洲电影欧美电影有声小说| 日韩欧美成人一区| 成人久久视频在线观看| 一区二区久久久久| 日韩无一区二区| 成人在线一区二区三区| 一区二区三区免费在线观看| 91精品国产免费| 成人午夜大片免费观看| 一个色妞综合视频在线观看| 欧美精品久久久久久久多人混战 | 亚洲男女一区二区三区| 欧美在线高清视频| 国产精品一二三四区| 国产精品不卡一区| 91精品国产综合久久福利软件| 国产资源精品在线观看| 亚洲欧美偷拍三级| 精品99久久久久久| 欧美视频一区二区在线观看| 国产乱码精品1区2区3区| 一区二区三区在线观看国产| 欧美成人一区二区三区片免费| 成人ar影院免费观看视频| 秋霞午夜鲁丝一区二区老狼| 中文字幕免费观看一区| 欧美一区二区三区免费在线看 | 日产欧产美韩系列久久99| 国产精品私人影院| 91精品免费观看| 色偷偷一区二区三区| 黄一区二区三区| 亚洲成人黄色小说| 国产精品麻豆网站| 精品剧情在线观看| 欧美天堂一区二区三区| 不卡av电影在线播放| 美国av一区二区| 性久久久久久久久久久久| 中文字幕综合网| 久久精品视频免费| 日韩欧美亚洲一区二区| 欧美午夜精品免费| 日本乱人伦aⅴ精品| 成人激情免费网站| 国产福利一区二区三区| 久久成人久久鬼色| 日本亚洲一区二区| 亚洲一卡二卡三卡四卡五卡| 国产精品毛片a∨一区二区三区| 久久夜色精品国产欧美乱极品| 91麻豆精品国产91久久久资源速度| 91精品福利在线| 97精品国产97久久久久久久久久久久 | 国产精品国产成人国产三级| 久久精品一区二区三区不卡| 这里只有精品99re| 欧美日韩国产成人在线免费| 欧美日韩小视频| 欧美色图12p| 欧美日韩亚洲综合一区二区三区| 一本一道波多野结衣一区二区| 91一区二区在线| 色婷婷综合五月| 91蜜桃传媒精品久久久一区二区| 91一区二区在线| 色综合久久久久网| 久久众筹精品私拍模特| 国产日韩欧美综合在线| 久久久777精品电影网影网 | 亚洲男人的天堂在线aⅴ视频| 成人免费视频在线观看| 亚洲精品成人精品456| 一区二区三区在线免费视频| 又紧又大又爽精品一区二区| 亚洲一区中文在线| 视频一区免费在线观看| 激情偷乱视频一区二区三区| 精品影视av免费| 国产99精品国产| 91免费观看视频| 欧美精品日韩一区| 日韩精品一区国产麻豆| 日本一区二区动态图| 一区二区三区四区视频精品免费 | 欧美一区二区三区爱爱| 欧美白人最猛性xxxxx69交| 久久久精品人体av艺术| 国产精品久久久久久户外露出| 亚洲激情在线播放| 老汉av免费一区二区三区| 国产成人综合亚洲网站| 日本高清成人免费播放| 欧美一区二区三区四区在线观看 | 亚洲日本欧美天堂| 亚洲成人动漫精品| 国产制服丝袜一区| 99久久综合国产精品| 在线播放视频一区| 国产精品三级av在线播放| 亚洲成av人在线观看| 国产成人福利片| 欧美丰满少妇xxxbbb| 国产精品久久久久精k8| 日韩不卡在线观看日韩不卡视频| 成人中文字幕合集| 欧美一区二区三区在线电影| 亚洲欧洲韩国日本视频| 美女网站一区二区| 在线观看视频91| 国产欧美日韩另类一区| 日韩成人午夜电影| 色av成人天堂桃色av| 国产欧美视频一区二区三区| 亚洲成精国产精品女| 99久久伊人久久99| 亚洲精品一区二区三区蜜桃下载 | 91麻豆精品91久久久久久清纯| 欧美国产日本视频| 久久精品国产亚洲aⅴ| 色综合久久六月婷婷中文字幕| 精品国产1区二区| 日本欧美大码aⅴ在线播放| 色噜噜狠狠色综合欧洲selulu| 久久久久国色av免费看影院| 免费成人深夜小野草| 欧美视频自拍偷拍| 一区二区三区视频在线观看| 不卡的av电影| 久久精品水蜜桃av综合天堂| 青青草国产精品97视觉盛宴 | 久久先锋影音av鲁色资源网| 视频在线观看一区| 欧美视频自拍偷拍| 亚洲午夜精品一区二区三区他趣| 97精品国产97久久久久久久久久久久| 国产午夜精品久久久久久免费视| 美女在线视频一区| 91精品国产色综合久久不卡电影 | 国产麻豆精品一区二区| 欧美一级理论片| 免费三级欧美电影| 日韩欧美卡一卡二| 久久99精品久久久久久动态图| 欧美一区二区不卡视频| 奇米777欧美一区二区|