1.引用靜態庫
1.包含標頭檔案
注意: 如果.**件不在當前工程目錄下,則需要指定.**件路徑.
兩種方法
方法a
a.右鍵專案->屬性
->c/c++
->常規
->附加包含目錄
->編輯
->新增資料夾路徑
(精確到最後一級目錄)
b.#include 「***.h」
方法b
a.#include 「檔案路徑名/***.h」
2.新增依賴項 , 指定使用哪個 .lib
step1
將.lib檔案路徑編輯到其中
step2
兩種方法
方法a1.#pragma comment(lib,「testlib.lib」)
方法b
#include
#include
"../testlib/testlib.h"
#pragma comment(lib,"testlib.lib")
//注意,在屬性設定中僅新增了附加庫目錄,這裡需要指定附加庫檔名
2.製作動態庫
新建空dll專案
testdll.h標頭檔案編寫
#ifndef _testdll_h_
#define _testdll_h_
__declspec
(dllexport)
//特別宣告(以dll方式匯出)
intadd_num
(int a,
int b)
;#endif
testdll.c編寫
#include
"testdll.h"
intadd_num
(int a,
int b)
重新生成
用dependency
軟體檢視dll檔案 是否有介面
3.使用動態庫
包含標頭檔案 又叫匯入標頭檔案
#ifndef _testdll_h_
#define _testdll_h_
#ifdef _dllapi
#define dllapi __declspec(dllexport)
#else
#define dllapi __declspec(dllimport)
#endif
//__declspec(dllexport) //特別宣告(以dll方式匯出)
int dllapi add_num
(int a,
int b)
;#endif
a)隱式呼叫法
新增 附加依賴項
兩種方法
新增#pragma comment(lib,"testdll.lib")
//這不是靜態庫,是導入庫
b)動態呼叫法
新增標頭檔案
新增呼叫** :hmodule hdll = loadlibrary(l"../testdll/release/testdll.dll");
給動態庫中的某函式定義別名 :typedef int (*padd) (int a,int b);
新增獲得函式指標** :padd padd = (padd)getprocaddress(hdll,"add_num");
//尋找函式名為add_num的函式,並將其指標賦值給padd 注意函式名不一定為自己所寫,可以使用dependency
檢視函式名;
直接使用函式指標padd(10,20);
使用完後,使用freelibrary(hdll);
釋放動態庫中函式;
靜態庫與動態庫的呼叫
呼叫鏈結庫的三種方法 1 複製標頭檔案和lib檔案到專案目錄下,然後在附加依賴項加入 lib 2 附加包含目錄 指定 include,附加依賴項新增 lib 3 在 中新增 pragma comment lib,lib 並且新增相應的 h標頭檔案 呼叫動態庫 靜態呼叫 1 複製.h,lib檔案和.d...
靜態庫與動態庫相互呼叫
測試場景,test,lib1,lib2,dll1,dll2,分為下面四種情況 1 test lib1 lib2 lib1編譯自己的 對lib2的部分,只需要lib2的標頭檔案,對lib2的 實現,使用佔位符關聯。生成test連線的時候,把lib1的 實現包含進來,再遞迴,把lib1中關聯lib2的 ...
靜態庫與動態庫相互呼叫
測試場景,test,lib1,lib2,dll1,dll2,分為下面四種情況 1 test lib1 lib2 lib1編譯自己的 對lib2的部分,只需要lib2的標頭檔案,對lib2的 實現,使用佔位符關聯。生成test連線的時候,把lib1的 實現包含進來,再遞迴,把lib1中關聯lib2的 ...