VS2015靜態庫與動態庫的使用
阿新 • • 發佈:2018-11-11
VS2015靜態庫與動態庫的使用
靜態庫
- 靜態庫建立(略),往往我們使用第三方的比較常見,如果要自己團隊間建立使用也很簡單;
- 標頭檔案的載入:
- 方式一:
(1)將靜態庫給出的標頭檔案拷貝到專案目錄下(*.vcxproj所在的目錄);
(2)在專案中新增該標頭檔案:右鍵–》新增–》現有項–》選中剛才拷貝的標頭檔案;
(3)在需要使用的檔案中#include “*.h” 包含剛才的標頭檔案。 - 方式二:
- 在專案屬性中配置標頭檔案的查詢路徑
- 方式一:
- 庫檔案的載入:
首先需要將*.lib同樣拷貝到專案目錄下
方式一:
使用#pragma comment(lib, "***.lib")
#include "stdafx.h"
#include "ConsolLib.h"
#include <iostream>
#pragma comment(lib, "ConsolLib.lib")
int main()
{
int tmp = AddTwo(10, 30);
std::cout << "tmp =" << tmp << std::endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
方式二:
通過專案屬性指定連結屬性,使在連結期能夠找到需要連結的靜態庫檔案
#include "stdafx.h"
#include <iostream>
#include "ConsolLib.h"
//#pragma comment(lib, "ConsolLib.lib")
int main()
{
int tmp = AddTwo(10, 30);
std::cout << "tmp =" << tmp << std::endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
方式三:
右鍵–》新增現有項–》新增*.lib
動態庫
動態庫的靜態連結
動態庫的使用包含三個方面:
* 1. 標頭檔案(*.h)
需要_declspec(dllexport)引用介面
同時使用extern “C”{ …… }包含起來,extern只是提示編譯器變數或函式只是定義在其它地方
匯入方法:(同靜態庫)
方法一:直接將標頭檔案拷貝到專案目錄;
方法二:在專案屬性中配置標頭檔案的查詢路徑
-
- 引入庫(*.lib)
使用_declspec(dllexport)標記匯出的介面,才會生成引入庫,否則只會生成動態庫。
它的匯入跟靜態庫類似,不再贅述。只是讓編譯器找到它的宣告符號。
- 引入庫(*.lib)
-
- 動態庫(*.dll)
動態庫的匯入方法:
方法一:將*.dll拷貝到專案目錄下
方法二:通過指定專案除錯屬性,而非直接拷貝方式
屬性配置–》除錯–》工作目錄
方法三:通過制定vs2015環境變數
- 動態庫(*.dll)
動態庫的動態連結
LoadLibrary()
GetProcAddress()
FreeLibrary()