• <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>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
            轉(zhuǎn)自: http://blog.163.com/xjchilli/blog/static/45347739200951013454647/
            通常我們?cè)谡{(diào)用DLL時(shí)所需的DLL文件必須位于以下三個(gè)目錄之一:
              (1)Windows的系統(tǒng)目錄:\windows\system;
              (2)DOS中path所指出的任何目錄;
              (3)程序所在的目錄。
              一、動(dòng)態(tài)鏈接庫(kù)的結(jié)構(gòu)

              動(dòng)態(tài)鏈接庫(kù)中定義有兩種函數(shù):導(dǎo)出函數(shù)(export function)和內(nèi)部函數(shù)(internal function),
            導(dǎo)出函數(shù)可以被其它模塊調(diào)用,內(nèi)部函數(shù)只能在庫(kù)內(nèi)部使用。我們?cè)谟肅++定制動(dòng)態(tài)庫(kù)文件時(shí),
            需要編寫的就是包含導(dǎo)出函數(shù)表的模塊定義文件(.DEF)和實(shí)現(xiàn)導(dǎo)出函數(shù)功能的C++文件。下面以
            Sample.dll為例介紹DEF文件和實(shí)現(xiàn)文件的結(jié)構(gòu)。
              1.模塊定義文件(.DEF)是一個(gè)或多個(gè)用于描述DLL屬性的模塊語(yǔ)句組成的文本文件,每個(gè)DEF文
            件至少必須包含以下模塊定義語(yǔ)句:
               ·第一個(gè)語(yǔ)句必須是LIBRARY語(yǔ)句,指出DLL的名字;
               ·EXPORTS語(yǔ)句列出被導(dǎo)出函數(shù)的名字;
               ·可以使用DESCRIPTION語(yǔ)句描述DLL的用途(此句可選);
               ·";"對(duì)一行進(jìn)行注釋(可選)。
              2.實(shí)現(xiàn)文件
               實(shí)現(xiàn)入口表函數(shù)的cpp文件中,包含DLL入口點(diǎn)處理的API函數(shù)和導(dǎo)出函數(shù)的代碼。
              二、創(chuàng)建Sample.dll
               1.首先創(chuàng)建Sample.dll的工程,啟動(dòng)VC++5.0按以下步驟生成DLL工程:
               ·在選單中選擇File\New\Project;
               ·在工程列表中選擇Win32 Dynamic-Link Library;
               ·在Project Name中輸入工程名:Sample;
               ·單擊Location右邊按鈕,選擇c:\sample目錄;
               ·單擊OK完成,至此已創(chuàng)建了Sample.dll的工程文件。
              2.創(chuàng)建Sample.def文件:
               ·在選單中選擇File\New\Text File;
               ·輸入以下代碼后保存文件名"Sample.def":
               ;Sample.def
               ;指出DLL的名字Sample,鏈接器將這個(gè)名字放到DLL導(dǎo)入庫(kù)中
               LIBRARY Sample
               ;定義導(dǎo)出函數(shù)ShowMe()為例

               EXPORTS
               ShowMe
               ;def文件結(jié)束
              3.創(chuàng)建Sample.cpp
               .在選單中選擇File\New\C++ Source File項(xiàng)
               .輸入以下代碼后保存文件名"Sample.cpp"
               //Sample.cpp
               #include 〈windows.h〉
               int ShowMe(void);
               //DllEntryPoint為DLL入口點(diǎn)函數(shù),負(fù)責(zé)初試化并終止DLL
               BOOL WINAPI DllEntryPoint(HINSTANCE hDLL,DWORD dwReason,LPVOID Reserved)
               { switch(dwReason)
               { case DLL-PROCESS-ATTACH:
               { break; }
               case DLL-PROCESS-DETACH:
               { break; } }
               return TRUE; }
               int ShowMe(void)
               { //蜂鳴器響一下
               MessageBeep((WORD)-1);
               MessageBox("你好!");
               return 1; }
              4.編譯DLL文件
              從Build選單中選擇Build Sample.DLL,產(chǎn)生Sample.DLL文件,以后就可以隨時(shí)調(diào)用了。
              三、在應(yīng)用程序中調(diào)用DLL文件
              在應(yīng)用程序中要首先裝入DLL后才能調(diào)用導(dǎo)出表中的函數(shù),例如用MFC創(chuàng)建基于對(duì)話框的工
            程Test,并在對(duì)話框上放置"Load"按鈕,你就必須添加裝載代碼。
              1.首先在TestDlg.cpp的首部添加變量設(shè)置代碼:
              //設(shè)置全局變量gLibSample用于存儲(chǔ)DLL句柄
              HINSTANCE gLibSample=NULL;
              //第二個(gè)變量ShowMe是指向DLL庫(kù)中ShowMe()函數(shù)的指針
              typedef int( SHOWME)(void);

              SHOWME ShowMe;
              2.利用ClassWizard為"Load"按鈕添加裝載DLL的代碼:
              Void CTestDlg::OnLoadButton()
              { //要添加的代碼如下
               if(gLibMyDLL!=NULL)
               { MessageBox("The Sample.DLL has already been load.");
               return; }
               //裝載Sample.dll,未加路徑,將在三個(gè)默認(rèn)路徑中尋找
               gLibSample=LoadLibrary("SAMPLE.DLL");
               //返回DLL中ShowMe()函數(shù)的地址
               ShowMe=(SHOWME)GetProcAddress(gLibSample,"ShowMe"); }
              3.只要DLL裝載成功,在應(yīng)用程序中就可以直接調(diào)用ShowMe()函數(shù)(本程序在Windows 95,VC++5.0中運(yùn)行通過)。
            posted on 2009-08-29 08:46 逛奔的蝸牛 閱讀(4951) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Qt
            一本色综合久久| 88久久精品无码一区二区毛片 | 久久国产高清字幕中文| 91久久精品电影| 欧洲国产伦久久久久久久| 久久久久久久久久久精品尤物| 久久综合狠狠综合久久综合88| yellow中文字幕久久网| 无码人妻久久久一区二区三区 | 欧美日韩中文字幕久久伊人| 无码乱码观看精品久久| 久久精品蜜芽亚洲国产AV| 久久午夜福利电影| 狠狠色丁香久久综合五月| 久久久久亚洲精品日久生情| 国产亚洲精久久久久久无码AV| 性高湖久久久久久久久| 一级做a爰片久久毛片毛片| 久久精品国产99国产精偷 | 热久久最新网站获取| 色欲久久久天天天综合网| 久久久久99精品成人片| 好久久免费视频高清| 日韩久久久久久中文人妻 | av午夜福利一片免费看久久| 一本色道久久综合狠狠躁| 亚洲国产成人久久综合一区77 | 日韩人妻无码精品久久久不卡 | 久久精品国产国产精品四凭| 久久久久国产一级毛片高清版| 色偷偷偷久久伊人大杳蕉| 久久久久av无码免费网| 久久精品免费全国观看国产| 亚洲国产精品成人久久蜜臀| 久久久网中文字幕| 久久91精品综合国产首页| 91精品国产91久久| 久久国产精品偷99| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久高潮一级毛片免费| 久久99精品久久久久久秒播|