C語言編寫靜態鏈結庫及其使用

2021-09-07 04:27:47 字數 1339 閱讀 5531

本篇講述使用c語言編寫靜態鏈結庫,而且使用c和c++的方式來呼叫等.

1、用c編寫靜態庫步驟

a.建立專案(win32 static library)

b.加入庫程式,原始檔使用c檔案 (win32 static library)

clib.c庫原始檔

int clib_add(int add1,int add2)

int clib_sub(int add1,int add2)

編譯,鏈結後產生clib.lib,後面使用這個檔案 

2、靜態庫的使用

a.建立乙個c檔案,能夠在檔案裡直接使用c庫函式,不須要標頭檔案,c編譯器僅僅是依據庫函式名稱,在庫中找到相應的函式**,進行鏈結。

b.庫的路徑設定。專案的「setting」中設定庫路徑,也能夠使用#pragmakeyword設定 #pragma comment(lib,"..\\clib\\clib.lib")

3、c的方式呼叫c語言編寫的靜態庫

c type

//c編譯器什麼標頭檔案及函式宣告都不要.....

#pragma comment(lib,"..\\clib\\clib.lib") //通知鏈結器。到那找原始碼.

int main(void)

4、c++的方式呼叫c語言編寫的靜態庫

在cpp環境使用c靜態庫。庫中函式原型定義要新增extern "c",比如:extern "c" int add(...);

//c++函式必須宣告,這是c++的函式特點

//c函式不必宣告。這是c的特點

//c++編譯器編譯函式時,必須找到宣告,依照那種方式給函式進行編譯。

extern "c" int clib_add(int num1,int num2); extern "c" int clib_sub(int num1,int num2); //extern "c" 給c++編譯器看,這個是依照c語言格式進行編譯. //以上二句是給編譯器看得. #pragma comment(lib,"..\\clib\\clib.lib") //以上一句**是給鏈結器看的. int main(void) { int num1 = 100; int num2 = 1000; nsum = clib_add(num1,num2); nsub = clib_sub(num1,num2); cout<<"nsum = "<

C語言使用動態鏈結庫靜態鏈結庫

1 每個 c 語言原始檔被編譯後生成目標檔案,這些目標檔案最終要被鏈結在一起生成可執 行檔案。2 鏈結器的主要作用是把各個模組之間相互引用的部分處理好,使得各個模組之間能夠正 確的銜接。由鏈結器在鏈結時將庫的內容直接加入到可執行程式中 編譯靜態庫原始碼 gcc c lib.c o lib.o 生成靜...

C語言使用動態鏈結庫靜態鏈結庫

1 每個 c 語言原始檔被編譯後生成目標檔案,這些目標檔案最終要被鏈結在一起生成可執 行檔案。2 鏈結器的主要作用是把各個模組之間相互引用的部分處理好,使得各個模組之間能夠正 確的銜接。由鏈結器在鏈結時將庫的內容直接加入到可執行程式中 編譯靜態庫原始碼 gcc c lib.c o lib.o 生成靜...

編寫靜態鏈結庫

在 vc 6.0 中new 乙個名稱為 libtest 的static library 工程,並新建 lib.h 和lib.cpp 兩個檔案,lib.h 和lib.cpp 的源 如下 檔案 lib.h ifndef lib h define lib h extern c int add int x,...