C++ 静态库和动态库的创建与使用

静态库和动态库的区别

在链接阶段如何处理,直接链接到可执行程序的是静态库,否则就是动态库

静态库

静态库是会被打包到exe可执行程序中的库,采用静态库一般生成的执行程序文件会比较大,
但是不需要额外拷贝dll文件了。


vs2019 创建c++ 静态库


如图创建头文件 Multi.h , 和 cpp文件 Multi.cpp

Multi.h代码如下

#pragma once

int MultiThree(int a, int b);

Multi.cpp代码如下

#include "pch.h"
#include "Multi.h"
#include "framework.h"

// TODO: This is an example of a library function
int MultiThree(int a, int b)
{
	return a * b;
}

然后编译生成静态库

vs2019 使用静态库

创建一个控制台程序 这里就不展示如何创建了,然后右键 属性,配置如下


在 main函数中使用静态库方法



动态库

动态库是在运行的时候加载的,没有必要打包到主程序,可以单独以dll文件的形式存在,可以多个应用程序共用一个动态库,方便更新dll,应用程序不需要重复打包

创建动态库


如图还是新建Multi.h 和 Multi.cpp文件


Multi.h

#ifndef MULTI
#define MULTI

// add headers that you want to pre-compile here
#include "framework.h"
extern "C" _declspec(dllexport) int myMulti(int a, int b);
extern "C" _declspec(dllexport) int myMultiThree(int a, int b);
#endif 

Multi.cpp

#include "pch.h"
#include "Multi.h" // 这里放了你函数的声明

// 当使用预编译的头时,需要使用此源文件,编译才能成功。
#include<iostream>
using namespace std;
int myMulti(int a, int b)
{
    return a * b;
}

int myMultiThree(int a, int b)
{
    return a * b;
}

同上设置dll文件生成目录,然后build

隐式使用动态库

新建c++控制台程序,设置属性如下




控制台配置如下


显示调用动态库

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