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

平台:windows 

编辑器: vs2019

自定义动态链接库

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

动态链接库导出函数

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

方式一:

创建生成动态链接库项目

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

  • 声明函数

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

 实现函数

源码:

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>中的xxxx.h的搜索目录。

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

  •  设置库目录

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

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

  • 附加依赖项 

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

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

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

 源码:

usingDllTestMain.cpp

#include <iostream>
#include <calculateGirth.h>

using namespace std;
//#pragma comment(lib, "MyDllTest.lib")
int main() {
	double width = 80;
	double height = 100;
	cout << "长度为:" << height<<"宽度为:"<<width << endl;
	cout << "周长为:" << getRectangleGirth(width, height) << "米(m)" << endl;
	return 0;
}

运行结果:

方式二

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

 源码:

#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

其实使用方法不变  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值