VC 6 0如何建立與呼叫動態鏈結庫 dll

2021-12-29 16:30:41 字數 1891 閱讀 8849

vc++支援的dll:

dll的編制與具體的程式語言及編譯器無關,動態鏈結庫隨處可見,vc++支援三種dll:非mfc動態庫、mfc規則dll和mfc擴充套件dll。dll匯出函式(或變數、類)可**用程式呼叫;dll內部函式只能在dll程式內使用,應用程式無法呼叫它們。

匯出函式的宣告方式:

一種在函式宣告型別和函式名之間加上「_declspec(dllexport)」。

另外一種採用模組定義(.def)檔案宣告,需要在庫工程中新增模組檔案,格式如下:

library 庫工程名稱

exports 匯出函式名

dll的呼叫方式:

一種靜態呼叫,由編譯系統完成對dll的載入和應用程式結束時dll的解除安裝。

另外一種動態呼叫,由程式設計者用api函式載入和解除安裝dll(dll載入—dll函式位址獲取—dll釋放)方式。

示例:一、 函式—-建立動態鏈結庫(mfc規則dll)

1. new–projects–mfc appwizard(dll)–regular dll using shared mfc dll //取名為mfc_dll

2. def檔案中新增:函式名(add_new)

3. **件中新增:外部函式宣告//求和函式,函式名為add_new

extern 「c」 __declspec(dllexport) int __stdcall add_new(int a,int b);

4. cpp檔案中新增: 外部函式實現

extern 「c」 __declspec(dllexport) int __stdcall add_new(int a,int b)

return a+b;

5. build–set active configuration–win32 release–ok

6. 生成

7. 根目錄下release資料夾中dll,lib與根目錄下**件即為所需

二、 函式—-呼叫動態鏈結庫(把mfc_dll.dll和mfc_dll.lib拷到工程所在目錄)

//靜態呼叫(.h可以寫到.cpp檔案中)

1. new–projects–win32 console application–an empty project

2. 新增**件:(test.h)

#pragma comment(lib,」mfc_dll.lib」) //告訴編譯器dll相對應的lib檔案所在路徑和檔名

extern 「c」_declspec(dllimport) int _stdcall add_new(int a,int b);//宣告匯入函式

3. 新增cpp檔案:(main.cpp)

#include 「test.h」

int main()

cout<

return 0;

//動態呼叫

#include

#include

typedef int (* lpaddfun)(int ,int);//定義乙個與add_new函式接受引數型別和返回值均相同的函式指標型別

int main()

hinstance hdll;//控制代碼 www.2cto.com

lpaddfun addfun;//函式指標

hdll=loadlibrary(「dlltest.dll」);//動態載入dll模組控制代碼

if(hdll)

addfun=(lpaddfun) getprocaddress(hdll,」add_new」);//得到所載入dll模組中函式的位址

if(addfun)

int result=addfun(2,3);

printf(「%d」,result); } freelibrary(hdll);//釋放已經載入的dll模組

return 0;

請繼續關注  李木空間   www.limou.net   

VC 6 0如何建立與呼叫動態鏈結庫

1.靜態鏈結庫與動態鏈結庫區別 靜態鏈結庫 lib中的指令被直接包含在最終生成的exe檔案中。動態鏈結庫 dll不必被包含在最終的exe中,exe檔案執行時可以動態地引用和解除安裝dll檔案。同時,靜態鏈結庫中不能再包含其他的動態鏈結庫或靜態庫,而動態鏈結庫中可以包含其他的動態或靜態庫。2.vc 支...

VC 6 0如何建立與呼叫動態鏈結庫

我要提問 我來說兩句 1.靜態鏈結庫與動態鏈結庫區別 靜態鏈結庫 lib中的指令被直接包含在最終生成的exe檔案中。動態鏈結庫 dll不必被包含在最終的exe中,exe檔案執行時可以動態地引用和解除安裝dll檔案。同時,靜態鏈結庫中不能再包含其他的動態鏈結庫或靜態庫,而動態鏈結庫中可以包含其他的動態...

VC 6 0實現超連結

vc 6.0實現超連結 2011年05月03日 首先,新建乙個基於對話方塊的工程,新增乙個靜態文字框,id為idc html。caption為然後新增單擊訊息對映,新增以下 void cmydlg onhtml bool bblue false cfont cfont1 cfont cfont2 在...