Visual Studio 2017下动态链接库的创建与使用及QT调用自己创建的动态链接库

3 篇文章 0 订阅

下文所使用的环境为Visual Studio 2017
生成和使用动态库的环境为 x86 Debug版本
QT环境为:MSVC2017—32bit

Visual Studio 2017下动态链接库的创建与使用及QT调用自己创建的动态链接库

1、DLL库的创建

为工程选择路径和名称,然后点击确定
在这里插入图片描述
完成工程创建后打开是这个样子
在这里插入图片描述
点开Dll.hDll.cpp可以看到里面编译器已经为我们生成了一部分代码。自己要编写的函数就放在这个类中,或者模仿这个类也可以写自己的类
在这里插入图片描述
下面是自己定义了一个函数用来测试

// Dll.cpp : 定义 DLL 的导出函数。
#include "pch.h"
#include "framework.h"
#include "Dll.h"
// 这是导出变量的一个示例
DLL_API int nDll=100;

// 这是导出函数的一个示例。
DLL_API int fnDll(void)
{
    return 0;
}
int CDll::ADDFUN(int a, int b)
{
	return a + b;
}
// 这是已导出类的构造函数。
CDll::CDll()
{
    return;
}

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

// 此类是从 dll 导出的
class DLL_API CDll {
public:
	CDll(void);
	int ADDFUN(int a, int b);
	// TODO: 在此处添加方法。
};

extern DLL_API int nDll;
DLL_API int fnDll(void);

然后点击生成解决方案,在你项目目录下的Debug文件夹下即可生成dll和lib文件
在这里插入图片描述

在这里插入图片描述

2、DLL库的使用

新建一个控制台应用程序,用于测试生成的dll库
在这里插入图片描述
创建成功后将刚刚生成的DLL.dllDLL.lib以及Dll.h三个文件拷贝至现在这个工程的目录下
在这里插入图片描述
DLL.dll文件移至Debug目录下。
在这里插入图片描述
打开当前工程在头文件中将刚刚拷贝过来的Dll.h添加至项目中。在主函数中包含#include "Dll.h"并添加引入lib库#pragma comment(lib,"./DLL.lib")。然后就可以访问lib库中的成员。
在这里插入图片描述

3、QT下动态库的使用

一定要确保自己当前使用开发环境和dll文件的版本一致。如本文使用的QT环境为MSVC2017-32位的,dll生成选择x86也是32位的。如果环境为MSVC2017-64位的dll也要是x64下生成的64位

①、 新建一个空的QT项目,运行一下,生成一个Debug目录。将第一节生成的DLL.libDll.h文件拷贝至当前项目目录下。
在这里插入图片描述
②、将第一节生成的DLL.dll文件拷贝至项目编译后的Debug目录下。如果为release的项目就将dll文件放在release目录下。
在这里插入图片描述
③、右键点击QT项目名,选择添加现有文件,将Dll.h文件添加至工程中。
④、右键点击QT项目名,选择添加库——>选择外部库
——>点击浏览选择刚刚添加到项目中文件夹中的DLL.lib文件——>点击下一步直至完成创建

在这里插入图片描述在这里插入图片描述
⑤、添加完成后会在.pro文件下多出下面几行语句
在这里插入图片描述
⑥、在widget.cpp中包含“dll.h”头文件,就可以对动态库中的成员进行访问测试了
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值