C++ 自定义动态链接库(.dll)及使用

平台:windows 

编辑器: vs2019

自定义动态链接库

自定义动态链接库的创建及使用方式有很多,学习自定义动态链接库时记录一下常用方式。

动态链接库导出函数

自定义动态链接库可导出函数和类,先使用简单的使用函数导出的

方式一:

创建生成动态链接库项目

创建动态链接库项目,可选择空项目或动态链接库。并设置项目属性,设置项目生成类型,即配置类型

C++ 自定义动态链接库(.dll)及使用_第1张图片

  • 声明函数

创建计算周长头文件,声明计算矩形周函数,并在.cpp文件中实现。

C++ 自定义动态链接库(.dll)及使用_第2张图片

 实现函数

C++ 自定义动态链接库(.dll)及使用_第3张图片C++ 自定义动态链接库(.dll)及使用_第4张图片

源码:

calculateGirth.h 

#ifndef _CALCULATEGIRTH_H_
#define _CALCULATEGIRTH_H_

extern "C" _declspec(dllexport) double getRectangleGirth(double width, double height);

#endif

 calculateGirth.cpp

#include "calculateGirth.h"

//计算矩形周长
double getRectangleGirth(double width, double height)
{
	return (width + height)* 2;
}

创建动态链接库使用项目

设置项目属性

  • 设置包含目录

包含目录:寻找#include中的xxxx.h的搜索目录。

找到动态链接库头文件所在目录,复制路径,将该路径添加到包含目录中。

C++ 自定义动态链接库(.dll)及使用_第5张图片

  •  设置库目录

库目录:寻找.lib文件的搜索目录

找到动态链接库生成的 .lib 文件路径,将该路径添加到库目录

C++ 自定义动态链接库(.dll)及使用_第6张图片

  • 附加依赖项 

附加依赖项:lib库(C++的库通常会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码)

找到我们生成的MyDllTest.lib 名称。将其添加到附加依赖项中。

也可以直接在代码中直接使用 #pragma comment(lib, "MyDllTest.lib")

C++ 自定义动态链接库(.dll)及使用_第7张图片

 源码:

usingDllTestMain.cpp

#include 
#include 

using namespace std;
//#pragma comment(lib, "MyDllTest.lib")
int main() {
	double width = 80;
	double height = 100;
	cout << "长度为:" << height<<"宽度为:"<

运行结果:

C++ 自定义动态链接库(.dll)及使用_第8张图片

方式二

重新定义动态链接库头文件,适用于导出多个函数。

C++ 自定义动态链接库(.dll)及使用_第9张图片C++ 自定义动态链接库(.dll)及使用_第10张图片

 源码:

#ifndef _CALCULATEGIRTH_H_
#define _CALCULATEGIRTH_H_

#ifndef GIRTH_DLL_EXPORT
#define GIRTH_DLL_API extern "C" _declspec(dllexport)
#else
#define GIRTH_DLL_API extern "C" _declspec(dllimport)
#endif

GIRTH_DLL_API double getRectangleGirth(double width, double height);

#endif

其实使用方法不变  

你可能感兴趣的:(C++,动态链接库,c++,自定义动态链接库)