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
非常详细

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