c 靜態鏈結庫與動態鏈結庫

2021-07-08 14:19:13 字數 1138 閱讀 3986

兩種庫:

共有兩種鏈結方式:

使用lib需注意兩個檔案:

使用dll需注意三個檔案:

生成和使用方法

作業系統:win7

開發軟體:vs2010

1.生成lib檔案

首先,我們先建立乙個控制台工程(新建->工程->控制台程式),新增add.cpp以及add.h檔案。

#ifndef _sub_h

#define _sub_h

void sub(int a,int b);

#endif

#include "sub.h"

#include

void sub(int a,int b)

4.僅有.dll檔案時候的使用方法

在沒有.h和.lib檔案時,需要函式指標和win32 api函式loadlibrary、getprocaddress裝載,只需要.dll檔案即可(將.dll檔案置入工程目錄中)。

#include

#include //使用函式和某些特殊變數

typedef void (*dllfunc)(int,int);  //確定呼叫函式的形參

int main()

dllfunc = (dllfunc)getprocaddress(hinstlibrary, "sub");//第二個引數為要呼叫的函式名稱

if (dllfunc == null)

dllfunc(5,4);

freelibrary(hinstlibrary);

return(1); }

#include

#include //使用函式和某些特殊變數

typedef void (*dllfunc)(int,int);  //確定呼叫函式的形參

int main()

dllfunc = (dllfunc)getprocaddress(hinstlibrary, "sub");//第二個引數為要呼叫的函式名稱

if (dllfunc == null)

dllfunc(5,4);

freelibrary(hinstlibrary);

return(1);}

動態鏈結庫與靜態鏈結庫

有人會想,動態鏈結這樣麻煩,為什麼還要用呢?這裡有乙個技術問題,對這個問題的解決直接導致了動態載入的需求。問題是有些dll只在某個windows版本中存在,或某個api只在某些windows版本中被加入指定的dll。當你使用靜態鏈結的.exe試圖在不支援的windows版本上執行時,系統會彈出系統對...

動態鏈結庫與靜態鏈結庫

原貼出處 http blog.csdn.net benny5609 archive 2008 04 17 2298998.aspxs 還有參考 http msdn.microsoft.com zh cn library 1ez7dh12 v vs.100 aspxs 首先通過乙個簡單的靜態鏈結庫的例...

靜態鏈結 庫 與動態鏈結 庫

靜態鏈結與動態鏈結 簡單的說,靜態庫和應用程式編譯在一起,在任何情況下都能執行,而動態庫是動態鏈結,顧名思義就是在應用程式啟動的時候才會鏈結,所以,當使用者的系統上沒有該動態庫時,應用程式就會執行失敗。再看它們的特點 動態庫 1.共享 多個應用程式可以使用同乙個動態庫,啟動多個應用程式的時候,只需要...