動態鏈結庫 實現

2021-03-31 08:56:29 字數 3154 閱讀 7996

靜態鏈結

平台: windows2000/xp

工具: vc++ 6.0

建立步驟:

1.

新建專案

: win32 static library; 2

選擇pre-***pliled header; 3

編輯標頭檔案和實現檔案;

4 編譯

, 生成

lib檔案;

參考**

:

//sum.h

#ifndef mysum

#define mysum

extern "c"

#endif

//sum.cpp

#include "stdafx.h"

#include "sum.h"

int sum(int n)

return iret; }

測試步驟

:

1 新建乙個

win32 console 工程;

2

加入函式呼叫;

3 向工程中加入標頭檔案和

lib檔案;

4 編譯,執行

;

參考**

:

//main.cpp

#include "sum.h"

#include

int main()

win32動態鏈結

建立步驟: 1

新建專案

: win32 dll; 2

編輯標頭檔案和實現檔案;

3 編譯

, 生成

lib檔案和

dll檔案;

參考**

:

//sum.h

#ifdef __cplusplus

extern "c"

#endif

//sum.cpp

#define sum_exports

#include "sum.h"

int sum(int n)

return iret; }

測試步驟

:

1 新建乙個

win32 console 工程;

2

加入函式呼叫;

3 向工程中加入標頭檔案和

lib檔案;

4 將

dll檔案放在可執行檔案同一目錄下 5

編譯,執行;

靜態裝入參考**

:

//main.cpp

#include "sum.h"

#include "stdio.h"

int main(void)

動態裝入參考**

:

//main.cpp

#include "sum.h"

#include "stdio.h"

#include

typedef int (*pfunc)(int);

int main(void)

else

printf("function not found!");

}

else

return 0; }

dll中匯出類和成員函式

建立步驟:

1 新建專案

: win32 dll; 2

編輯標頭檔案和實現檔案;

3 編譯

, 生成

lib檔案和

dll檔案;

//cfoo.h

#ifdef cdll_exports

#define cdll_api __declspec(dllexport)

#else

#define cdll_api __declspec(dllimport)

#endif

class cdll_api cfoo ;

//cfoo.cpp

#include "stdafx.h"

#include "cfoo.h"

#include

void cfoo::hello()

測試步驟: 1

新建乙個

win32 console 工程;

2

加入函式呼叫;

3 向工程中加入標頭檔案和

lib檔案;

4 將

dll檔案放在可執行檔案同一目錄下 5

編譯,執行;

//main.cpp

#include "cfoo.h"

int main(void)

使用mfc擴充套件dll

假設要匯出乙個對話方塊

,要修改的**

:

#ifndef _afxext

#define idd_ext_name 129

#else

#include "resource.h"

#endif

classafx_ext_class**amedlg : public cdialog

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...

靜態鏈結庫,動態鏈結庫

關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...