Qt 您所在的位置:网站首页 qt缺少库 Qt

Qt

2024-06-12 17:29| 来源: 网络整理| 查看: 265

Qt-动态链接库(.dll)的创建与调用 一、前言

在Qt日常开发过程中常常需要采用自建库的方法将一些功能封装到库中以进行应用程序开发,按照调用方法可以分为静态调用和动态调用。本文将以一个简单示例构建过程,对Qt动态链接库(.dll)的动态链接进行介绍。

二、详细步骤 1. 创建动态库

首先,点击左上角文件,新建一个Library。 111111111 取名为addLib,留意创建路径,之后要用,点下一步。 在这里插入图片描述 选择qmake后,再下一步。定义工程细节窗口选择Shared Library。 在这里插入图片描述 编译器选择“MinGW”,32位或者64位都可以,根据需要配置即可。剩下的窗口都选择下一步。 在这里插入图片描述

考虑动态库的通用性,我们采用C语言构建动态库。下面将以一个简单的求和函数为例演示动态库的创建过程。首先在addlib.h文件中声明一个add函数,代码片段如下。

// 头文件编写 #ifndef ADDLIB_H #define ADDLIB_H #include "addLib_global.h" //class ADDLIB_EXPORT AddLib //{ //public: // AddLib(); //}; extern "C" ADDLIB_EXPORT int add(int a, int b); #endif // ADDLIB_H

在声明的函数前加上extern “C” 关键字、ADDLIB_EXPORT关键字。并将原文件中自动生成的空类注释掉,之后跳转到.cpp文件中添加函数定义。

#include "addlib.h" //AddLib::AddLib() //{ //} int add(int a, int b) { return a+b; }

保存后编译整个工程,在生成的目录中可以看到生成的动态库文件(.dll ) 在这里插入图片描述

2. 创建实例应用程序

新建一个工程,如下图所示。 在这里插入图片描述

注意编译器要与上文构建的Lib库相同。这里选择MinGW-64。 在这里插入图片描述

3. 调用动态库

首先,在主函数中定义一个函数指针typedef int ( *pAdd)(int , int);,返回值类型和形参列表与要调用的库函数保持一致。

// 主函数 #include using namespace std; typedef int ( *pAdd)(int , int); //定义函数指针 int main() { cout int ret = add(1,4); //在这里调用DLL里的函数 cout pAdd add = (pAdd)mydll.resolve("add"); if(add) { int ret = add(1,4); //在 这里调用DLL里的函数 cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有