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

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

平台:windows 

编辑器: vs2019

自定义class="superseo">动态链接库

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


动态链接库导出函数

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

方式一: 创建生成动态链接库项目

创建动态链接库项目,可选择空项目或动态链接库。


并设置项目属性,设置项目生成类型,即配置类型

  • 声明函数

创建计算周长头文件,声明计算矩形周函数,并在.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的搜索目录。


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


  •  设置库目录

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

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

  • 附加依赖项 

附加依赖项:lib库(C++的库通常会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。


编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码)

找到我们生成的MyDllTest.lib 名称。


将其添加到附加依赖项中。


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

 源码:

usingDllTestMain.cpp

#include 
#include 

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

运行结果:

方式二

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


 源码:

#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

其实使用方法不变  

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/607308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)