一).靜態調用其步驟如下: 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),釋放動態鏈接庫。
VC++動態調用DLL 和靜態調用DLL
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.