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