靜 動態鏈結庫使用總結

2021-04-21 05:58:02 字數 1651 閱讀 5325

-----------------------編寫方法(visual studio為例)

一、靜態庫編寫

1.首先當然是開vs然後建立乙個靜態庫工程啦

2.格式.一般有標頭檔案.h和原檔案.cpp,當然你也可以寫一在乙個cpp裡.

mydll.h------------------------

extends "c"

mydll.cpp--------------------

#include "mylib.h"

int sum(int num1,int num2)

int mult(int num1,int num2)

3.編譯得到lib,然後拿埋mydll.h就可以使用了 

二、動態庫編寫

1.首先建立乙個動態工程.

2.格式.

mydll.h------------------------

#ifdef dll_api

#else

#define dll_api extern "c" _declspec(dllimport)

#endif

dll_api int _stdcall add(int a,int b);

mydll.cpp--------------------

#define dll_api extern "c" _declspec(dllexport)

#include "mydll.h"

#include

int add(int a,int b)

3.編譯的到lib,和dll,然後拿埋編寫的mydll.h就可以使用了.

個人想說的話:動態庫必須要用_declspec()字樣標識,但是靜態的就不用了.extends "c" 和_stdcall都是呼叫方式,

詳細看這裡

-----------------------使用方法

一、靜態庫包括

.lib和.h

檔案,在工程中使用靜態庫分為3步:

1、在工程中加入靜態庫,有兩種方法:

方法一:專案設定中引用

.lib

,project-setting-link-object/library modules

中新增.lib

;(需要在

tools/options

設定正確的引用路徑)

方法二:在專案中直接加入

lib,

project-add to project-files

,選擇正確的

.lib。

方法三:   #pragma comment(lib, "##/##/mine.lib") 2

、在工程中包括

.h檔案;(可能

需要在tools/options

設定正確的引用路徑) 3、

在工程中使用靜態庫中的函式;

二、動態鏈結庫一般包括

.lib(

匯出函式),

.h,.dll

,使用動態庫有兩種情況: 1

、.lib

,包含標頭檔案,使用匯出函式;2、

動態載入,直接使用

loadlibrary() freelibrary( ) getprocaddress()

載入所需的動態庫,然後指定所需的匯出函式,效率最高!

動態鏈結庫使用 靜 動態鏈結庫使用總結

一 靜態庫編寫 1.首先當然是開vs然後建立乙個靜態庫工程啦 2.格式.一般有標頭檔案.h和原檔案.cpp,當然你也可以寫一在乙個cpp裡.mydll.h extends c mydll.cpp include mylib.h int sum int num1,int num2 int mult i...

靜態鏈結庫與動態鏈結庫總結

1 在生成lib檔案的時候並不發生連線的過程,編譯器僅僅把obj檔案裝載為乙個lib檔案。例如 static1 int add int a,int b int sub int a,int b static2 int myadd int a,int b int mysub int a,int b 這個...

使用動態鏈結庫

1.動態鏈結庫是程式執行時載入的庫,當動態鏈結庫正確安裝後,所有的程式都可以使用動態庫來執行程式。動態鏈結庫是目標檔案的集合,目標檔案在動態鏈結庫中的組織方式是按照特殊方式形成的。庫中函式和變數的位址是相對位址,不是絕對位址,其真實位址在呼叫動態庫的程式載入時形成。2.動態鏈結庫的名稱有別名 son...