Qt | 您所在的位置:网站首页 › qt缺少库 › Qt |
Qt-动态链接库(.dll)的创建与调用
一、前言
在Qt日常开发过程中常常需要采用自建库的方法将一些功能封装到库中以进行应用程序开发,按照调用方法可以分为静态调用和动态调用。本文将以一个简单示例构建过程,对Qt动态链接库(.dll)的动态链接进行介绍。 二、详细步骤 1. 创建动态库首先,点击左上角文件,新建一个Library。 考虑动态库的通用性,我们采用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 ) 新建一个工程,如下图所示。 注意编译器要与上文构建的Lib库相同。这里选择MinGW-64。 首先,在主函数中定义一个函数指针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 实验室设备网 版权所有 |