VC++動態調用DLL 和靜態調用DLL

一).靜態調用其步驟如下:
1.把你的youApp.DLL拷到你目標工程(需調用youApp.DLL的工程)的Debug目錄下;
2.把你的youApp.lib拷到你目標工程(需調用youApp.DLL的工程)目錄下;
3.把你的youApp.h(包含輸出函數的定義)拷到你目標工程(需調用youApp.DLL的工程)目
錄下;
4.打開你的目標工程選中工程,選擇Visual C++的Project主菜單的Settings菜單;
5.執行第4步後,VC將會彈出一個對話框,在對話框的多頁顯示控件中選擇Link頁。然
後在Object/library modules輸入框中輸入:youApp.lib
6.選擇你的目標工程Head Files加入:youApp.h文件;
7.最後在你目標工程(*.cpp,需要調用DLL中的函數)中包含你的:#include "youApp.h"
注:youApp是你DLL的工程名。

2.動態調用其程序如下:
動態調用時只需做靜態調用步驟1.
{
HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
if(hDllInst)
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
MYFUNC youFuntionNameAlias = NULL; // youFuntionNameAlias 函數別名
youFuntionNameAlias = (MYFUNC)GetProcAddress
(hDllInst,"youFuntionName");
// youFuntionName 在DLL中聲明的函數名
if(youFuntionNameAlias)
{
youFuntionNameAlias(param1,param2);
}
FreeLibrary(hDllInst);
}
}
採用動態庫技術對於升級軟件版本更加容易。與靜態庫(Static Link Library)不同,動態庫裏面的函數不是執行程序本身的一部分,而是根據執行需要按需載入,其執行代碼可以同時在多個程序中共享。
(1)靜態調用,也稱爲隱式調用,由編譯系統完成對DLL的加載和應用程序結束時DLL卸載的編碼(Windows系統負責對DLL調用次數的計數),調用方式簡單,能夠滿足通常的要求。通常採用的調用方式是把產生動態連接庫時產生的.LIB文件加入到應用程序的工程中,想使用DLL中的函數時,只須在源文件中聲明一下。 
LIB文件包含了每一個DLL導出函數的符號名和可選擇的標識號以及DLL文件名,不含有實際的代碼。Lib文件包含的信息進入到生成的應用程序中,被調用的DLL文件會在應用程序加載時同時加載在到內存中。 
(2)動態調用,即顯式調用方式,是由編程者用API函數加載和卸載DLL來達到調用DLL的目的,比較複雜,但能更加有效地使用內存,是編制大型應用程序時的重要方式。在Windows系統中,與動態庫調用有關的函數包括: 
①LoadLibrary(或MFC 的AfxLoadLibrary),裝載動態庫。 
②GetProcAddress,獲取要引入的函數,將符號名或標識號轉換爲DLL內部地址。 
③FreeLibrary(或MFC的AfxFreeLibrary),釋放動態鏈接庫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章