vs 2017 靜態庫 動態庫 的初步使用

靜態庫的初步使用

  1. 新建 靜態庫 項目 Lib1
    會產生 sln文件與vcproj文件,vcproj是工程文件,sln是解決方案文件
    一個解決方案可以有多個工程
    在頭文件(Lib1.h)寫函數聲明,在cpp文件定義函數實現
    這時候右鍵點擊項目 ->生成, 會產生 Lib1.lib 的靜態庫文件
  2. 使用這個靜態庫文件
    新建一個控制檯項目
    a)在主函數cpp文件裏面 通過#include “相對路徑\Lib1.h” 將函數聲明引用過來
    b)引用第一步生成的靜態庫文件
    右鍵項目 -> 屬性 ->配置屬性 ->鏈接器->常規->附加庫目錄 將第一步生成的Lib1.lib文件所在的目錄添加上(可以是相對路徑)
    右鍵項目 -> 屬性 ->配置屬性 ->鏈接器-> 輸入->附加依賴項 填寫上靜態庫文件的名字 Lib1.lib(這一步也可以通過代碼來完成
#pragma comment(lib, "Lib1.lib")

這個時候就可以正常使用這個靜態庫提供的函數了

動態庫的初步使用

  1. 用vs新建一個動態庫項目 fouroperations,
    會出現 dllmain.cpp這個文件內容如下:
// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

再創建要對外提供的 頭文件 與 源文件
fouroperations.h

#pragma once

class FourOperations {
public:
	__declspec(dllexport) FourOperations();
	__declspec(dllexport) ~FourOperations(); 
	static __declspec(dllexport) double add(double a, double b);//加法
	static __declspec(dllexport) double sub(double a, double b);//減法
	static __declspec(dllexport) double mul(double a, double b);//乘法
	static __declspec(dllexport) double div(double a, double b);//除法
	__declspec(dllexport) void print();
};

fouroperations.cpp

// fouroperations.cpp : 定義 DLL 應用程序的導出函數。
//

#include "stdafx.h"
#include "fouroperations.h"
#include "iostream"
using namespace std;

FourOperations::FourOperations() {

}

FourOperations::~FourOperations() {

}

double FourOperations::add(double a, double b) {
	return a + b;
}
double FourOperations::sub(double a, double b) {
	return a - b;
}
double FourOperations::mul(double a, double b) {
	return a * b;
}
double FourOperations::div(double a, double b) {
	return a / b;
}
void FourOperations::print() {
	cout << "this is fouroperations.cpp" <<endl;
}

這時候右鍵項目,點擊生成會生成dll文件,發佈的話,就需要
頭文件 fouroperations.h 與 fouroperations.lib 與 fouroperations.dll
在這裏插入圖片描述
2. 使用這個動態庫文件
新建一個項目,右鍵項目屬性->配置屬性->c/c+±>常規->附加包含目錄(把動態庫文件的 fouroperations.h 添加進去 )
右鍵項目屬性->配置屬性->鏈接器->常規->附加庫目錄(填寫fouroperations.lib 所在的路徑)
右鍵項目屬性->配置屬性->鏈接器->輸入->附加依賴項(填寫fouroperations.lib )

這樣就可以正常使用這個動態庫文件了

另外關於 linux下,如果出現 靜態庫 使用了動態庫, 而我們又要使用這個靜態庫的 情景:
參考https://www.cnblogs.com/fnlingnzb-learner/p/8119729.html
非常詳細

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章