• <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>
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            • 隨筆 - 4
            • 文章 - 0
            • 評論 - 2
            • 引用 - 0

            常用鏈接

            留言簿(1)

            隨筆檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            dll的使用方法


            首先要建立一個dll的資源,file->new->MFC appwizard(dll) 輸入工程的名字
              點擊 FINISH 然后點擊 OK
             你就可以開始創建你自己的dll資源了  我這里的DLL資源是一個圖片
             INSERT -》RESOURCE -》選擇BITMAP 單機IMPORT  找出要導入的圖片就可以了
            注意圖片的后綴名是 .bmp 或 .ico 不能是其他格式的否則就用不了
              導入成功以后就可以編譯一下(不用運行)
            然后在工程文件的目錄中debug文件夾中就會有一個 .dll 和.lib的文件(這兩個文件有用)
            這樣你自己的DLL就建立成功了
             接下來的任務是如何把自己建立的DLL應用到自己的程序中去
              打開工程建立一個基于對話框的應用程序,放置一個picture(這個控件必須修改名字,否則無法定義成員變量)和一個button,把picture的type設置成和你加載的圖片一樣的格式(比如在DLL中你導入的是一個.bmp的圖片,那就把type設置成bitmap,導入的是.ico的圖片 就設置成icon)
             然后就是給button增加單機響應事件。
            代碼如下:
             HINSTANCE hdll; //存儲加載的動態連接庫的句柄
             HINSTANCE hcurrent;  //保存當前句柄 以用于最后恢復到當前
             hdll=::LoadLibrary("C:\\Program Files\\Microsoft Visual Studio\\MyProjects\\cbitmap\\Debug\\cbitmap.dll");
                              //加載你自己建立的DLL 這里有一個注意的地方 文件目錄之間要用 \\ 否則會有警告
             if(hdll)  //如果DLL不為空
             {
                      hcurrent=AfxGetResourceHandle();  //獲取當前的句柄
                AfxSetResourceHandle(hdll);  //設置成 DLL的句柄
                HBITMAP hbit=::LoadBitmap(hdll,MAKEINTRESOURCE(IDB_BITMAP1)); //第一個參數 用的是哪個對象就要設置成相應的句柄 如果用的是本工程中的圖片就用 AfxGetInstanceHandle 或者是AfxGetApp->m_Instance;
              第二個參數是圖片的一個資源標識,要用MAKEINTRESOURCE 進行轉換 非常要注意的是MAKEINTRESOURCE的參數 你導入的圖片在DLL中用的是什么名字 在這里也要用一樣的的名字 否則就會出錯。
                m_pic.SetBitmap(hbit);
                      AfxSetResourceHandle(hcurrent); //恢復到當前句柄
             
             
             }
             AfxFreeLibrary(hdll);  釋放hdll
            并不是代碼有了就可以用了 還需要一些準備工作,第一個 將制作DLL產生的lib文件導入
             步驟:project ->add to project ->files 找到制作DLL產生的lib文件,將其導入
             還要在工程的頭文件中把制作DLL時產生的和工程名相同的頭文件用語句“#include "xx.h"”
             包含進來。這里有一個小細節要注意,由于這個頭文件的目錄和我們現有工程的的目錄是不一樣的
              我們可以把這個頭文件直接復制到我們現有工程的目錄中即可。
             
            這些工作做完了 我們就可以運行我們的工程了

             


            DLL中定義有兩種函數:
            ---- 導出函數(exportfunction): 可以被其他模塊調用
            ---- 內部函數(internalfunction): 只能在DLL內部使用
            ---- 創建一個基于API的DLL.本例只定義了導出函數.

            ---- 1.在FILE- >NEW- >PROJECTS中選擇"WIN32 Dynamic-Link Library"在Project Name中輸入 "a"按OK

            ---- 2.在FILE- >NEW- >FILES中選擇C++ SOURCE FILE,在FILE中輸入a.cpp,按OK

            ---- 在FILE- >NEW- >FILES中選擇TEXT文件,在FILE中輸入a.h,按OK

            ---- 在FILE- >NEW- >FILES中選擇TEXT文件,在FILE中輸入a.def,按OK

            ---- 3.源文件:

             file://---------------------------
             file://a.cpp
             #include < windows >
             WINAPI int add(int a,int b)
             { return (a+b);
             }
             file://---------------------------
             file://a.h
             WINAPI int add(int a,int b);
             file://---------------------------
             file://a.def
             LIBRARY      "aaa" ;指出DLL的名字
             DESCRIPTION  ''aaa Windows Dynamic Link Library''
             ;描述DLL的用途(此句可選)
             EXPORTS      add ;導出函數的名字

            四.調用DLL的方法:
            ---- 1.通常我們在調用DLL時所需的DLL文件必須位于以下三個目錄之一:
            ---- (1)Windows的系統目錄:\windows\system;

            ---- (2)DOS中path所指出的任何目錄;

            ---- (3)程序所在的目錄;

            ---- 同時應注意管理好你的.lib文件和.h和文件

            ---- 2.建立一個工程,簡單起見可建立一個控制臺應用程序.

            ---- 3.在工程中引入a.lib:

            ---- (1)如果你的a.lib放在VC標準的LIB文件夾中.

               單擊Project- >Project Settings...
               在link選卡的object/library modules中加上a.lib即可

            ---- (2)如果你的a.lib不是放在VC標準的LIB文件夾中
               單擊Project- >Add to Project- >files...
               找到a.lib文件,按OK
            < pre >
            4.//------------------------
               file://call_a.cpp
               #include< stdio.h >
               #include "c:/a/a.h"
               void main(void)
               { int c=0;

              c=add(1,2);
              printf("1+2=%d",c);
               }
             file://本程序在VC5.0下調試通過

             

            posted on 2009-04-12 11:32 梁少林 閱讀(662) 評論(0)  編輯 收藏 引用

            亚洲精品高清久久| 波多野结衣久久| 国产高潮国产高潮久久久91| 91久久精品电影| 亚洲国产日韩欧美综合久久| 精品无码久久久久国产动漫3d| 日日噜噜夜夜狠狠久久丁香五月| 久久超碰97人人做人人爱| 国产精品亚洲美女久久久| 一本色道久久HEZYO无码| 91精品国产高清久久久久久国产嫩草 | 久久久久人妻一区二区三区vr| 国产成人精品久久免费动漫 | 久久综合综合久久97色| 免费一级做a爰片久久毛片潮| 久久香综合精品久久伊人| 久久久无码精品午夜| 狠狠色丁香久久婷婷综| 久久久噜噜噜久久中文字幕色伊伊 | 久久久久久国产a免费观看不卡| 久久毛片一区二区| 久久久精品国产亚洲成人满18免费网站 | 久久夜色精品国产| 热99re久久国超精品首页| 无码人妻少妇久久中文字幕蜜桃| 97精品伊人久久久大香线蕉| 婷婷伊人久久大香线蕉AV| 无码人妻久久一区二区三区蜜桃 | 7777久久久国产精品消防器材| 久久婷婷五月综合成人D啪 | 久久香综合精品久久伊人| 久久国产成人亚洲精品影院| 曰曰摸天天摸人人看久久久| 久久精品成人免费网站| 精品少妇人妻av无码久久| 久久久女人与动物群交毛片| 久久久久亚洲AV无码观看| 伊人久久大香线蕉综合影院首页| 青青草国产97免久久费观看| 久久久久九九精品影院| 久久综合亚洲色HEZYO国产|