動態鏈結庫 dll和 lib

2021-07-04 01:54:08 字數 1092 閱讀 9495

測試環境vs2008

一、關於動態鏈結庫

2、載入方式:

隱式鏈結,編譯工程時,需要先新增.lib檔案。可以直接通過編譯環境新增,還可以通過**新增(#pragma comment  (lib,"***.lib"))

二、關於extern "c"、__cdecl、__stdcall(這裡是雙下劃線,雙下劃線和單下劃線是有區別的)

2、我們可以建立乙個dll工程,然後分別用這三個關鍵字來宣告函式,然後用命令視窗cmd,進行dumpbin命令檢視相關到處函式和變數資訊,在其中就能看到鏈結的函式名變化。具體操作可以參見:

3、所以為了使dll檔案在跨平台的時候能使用原本的函式名進行呼叫。我們可以在dll工程下建立乙個module-definition file(.def)檔案,進行匯出函式名的定義。**如下:

library"dllexercise"

exports

add

三、部分測試**(dll檔案中只匯出了乙個函式add,然後在mfc下的多文件工程中建立乙個對話方塊進行函式呼叫)

dll工程中檔案:

1、dll.h**

#ifdef dll_api

#else

#define dll_api /*extern "c" */_declspec(dllimport)

#endif

dll_api int/* __stdcall*/ add(int a,int b);

2、dll.cpp**

#define dll_api /*extern "c" */_declspec(dllexport)

#include "dll1.h"

int /*__stdcall*/ add(int a, int b)

3、dll1.def**

library"dllexercise"

exports

add

dlltest工程中部分**:

1、在要呼叫add函式的檔案中新增語句(記得把dll工程下的.dll檔案和.lib檔案複製到本工程目錄下)

#include "dll1.h"

#pragma comment(lib,"dllexercise.lib")

動態鏈結庫dll和lib檔案的生成

vs2010封裝dll和lib方法 1 新建空工程 test 2 設定屬性 常規 配置型別 動態庫dll 當然也可直接新建dll工程 3 寫入 巨集定義 全域性變數 類和函式的宣告在.h檔案中寫 pragma once ifdef dll implement define dll api decls...

動態鏈結庫dll,靜態鏈結庫lib, 導入庫lib

目前以lib字尾的庫有兩種,一種為靜態鏈結庫 static libary,以下簡稱 靜態庫 另一種為動態連線庫 dll,以下簡稱 動態庫 的導入庫 import libary,以下簡稱 導入庫 靜態庫是乙個或者多個obj檔案的打包,所以有人乾脆把從obj檔案生成lib的過程稱為archive,即合併...

動態鏈結庫dll,靜態鏈結庫lib, 導入庫lib

目前以lib字尾的庫有兩種,一種為靜態鏈結庫 static libary,以下簡稱 靜態庫 另一種為動態連線庫 dll,以下簡稱 動態庫 的導入庫 import libary,以下簡稱 導入庫 靜態庫是乙個或者多個obj檔案的打包,所以有人乾脆把從obj檔案生成lib的過程稱為archive,即合併...