1. 程式人生 > >VS2015靜態庫與動態庫的使用

VS2015靜態庫與動態庫的使用

VS2015靜態庫與動態庫的使用

靜態庫

  1. 靜態庫建立(略),往往我們使用第三方的比較常見,如果要自己團隊間建立使用也很簡單;
  2. 標頭檔案的載入: 
    • 方式一: 
      (1)將靜態庫給出的標頭檔案拷貝到專案目錄下(*.vcxproj所在的目錄); 
      (2)在專案中新增該標頭檔案:右鍵–》新增–》現有項–》選中剛才拷貝的標頭檔案; 
      (3)在需要使用的檔案中#include “*.h” 包含剛才的標頭檔案。
    • 方式二:
    • 在專案屬性中配置標頭檔案的查詢路徑 
      指定標頭檔案查詢目錄
  3. 庫檔案的載入: 
    首先需要將*.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

方式二: 
通過專案屬性指定連結屬性,使在連結期能夠找到需要連結的靜態庫檔案 
設定lib所在目錄
指定靜態庫的名字

#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只是提示編譯器變數或函式只是定義在其它地方 
匯入方法:(同靜態庫) 
方法一:直接將標頭檔案拷貝到專案目錄; 
方法二:在專案屬性中配置標頭檔案的查詢路徑

    1. 引入庫(*.lib) 
      使用_declspec(dllexport)標記匯出的介面,才會生成引入庫,否則只會生成動態庫。 
      它的匯入跟靜態庫類似,不再贅述。只是讓編譯器找到它的宣告符號。
    1. 動態庫(*.dll) 
      動態庫的匯入方法: 
      方法一:將*.dll拷貝到專案目錄下 
      方法二:通過指定專案除錯屬性,而非直接拷貝方式 
      屬性配置–》除錯–》工作目錄 
      這裡寫圖片描述
      方法三:通過制定vs2015環境變數 
      這裡寫圖片描述

動態庫的動態連結

LoadLibrary() 
GetProcAddress() 
FreeLibrary()