庫(靜態庫和動態庫)

2022-08-03 02:21:08 字數 1370 閱讀 8925

一 . 靜態庫:

以c語言的形式生成庫

.h中

extern"c

"int add(int ,int

);extern"c

"int sub(int ,int);

二. 測試靜態庫:(將.h和.lib放入)

.h

#ifdef __cplusplus//

c++程式設計師用c的方式開啟

extern"c

"int add(int ,int

);extern"c

"int sub(int ,int

);#else

//c的程式設計師直接開啟

int add(int ,int

);int sub(int ,int

);#endif

源.cpp

#include #include 

"stdafx.h

"//宣告

using

namespace

std;

#pragma comment(lib,"靜態庫.lib")//在鏈結階段,匯入靜態庫(方法一)

intmain()

三. 動態庫:

兩種匯出方式:

1. 原始檔右鍵新增新建項 ** 模組定義檔案

library "動態庫.dll"

exports

add @1

sub @2

2. 在要匯出的函式位置前加_declspec(dllexport)

四 . 測試動態庫(匯入.lib和.dll(.dll要與.exe在同一目錄檔案下))

兩種載入方式:

1.隱式載入:#pragma comment(lib,"0305動態庫.lib")

#include #include 

"mydll.h

"using

namespace

std;

//引入庫 --隱式載入

#pragma comment(lib,"0305動態庫.lib")

intmain()

2.顯示載入

#include #include 

using

namespace

std;

typedef

int (*pfun)(int,int

);int

main()

system(

"pause");

return0;

}

更新:只更新函式實現時,只需將.dll重新複製

更改函式名和匯出方式時,需要將.dll和.lib重新複製

靜態庫和動態庫

一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...

靜態庫和動態庫

靜態庫 lib 中相當於存放了所有的源 包括他引入的其他靜態lib檔案.其實是所有cpp編譯後對應的.obj檔案的打包 所以靜態lib都比較大。動態庫dll也有lib但是這個lib,只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個l...

靜態庫和動態庫

靜態庫 是在執行程式之前就已經加入到執行 中,成為執行程式的一部分來執行的,字尾名 a 動態庫 是在執行程式啟動時載入到執行 中,字尾名 so 靜態庫一開始就加入了執行 使得可執檔案比較臃腫,導致檔案比較大,占用記憶體較大使得它的編譯速度減慢,但是執行檔案時可以直接呼叫 所以執行效率較高 而動態庫只...