Qt学习——调用dll功能函数

环境:windows10+Qt5

预备知识:

隐式调用:同时有库文件(.lib),头文件(.h)与动态链接库(.dll)。(更加简便推荐使用)

显式调用:没有导入库文件(.lib),只有头文件(.h)与动态链接库(.dll)。


一、隐式调用

(1)打开工程.pro文件,在.pro文件中右键,选择“添加库”。



(2)根据需要选择对应选项,此处选择外部库。


(3)添加库文件,请注意根据库文件选择对应选项,若路径中无相关文件会导致报错。


(4)自动生成的添加代码


(5)在使用前添加库文件的头文件,然后即可调用库中的API函数


二、显式调用

    显式调用参考https://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html,采用Qt提供的QLibrary 类。下面为参考中的例子:

#include <QLibrary>
#include <QDebug>
#include <QMessageBox>
#include "dll.h"             //引入头文件
typedef int (*Fun)(int,int); //定义函数指针,以备调用
int main(int argc,char **argv)
{
    QApplication app(argc,argv);
    QLibrary mylib("myDLL.dll");   //声明所用到的dll文件
    int result;
    if (mylib.load())              //判断是否正确加载
    {
        QMessageBox::information(NULL,"OK","DLL load is OK!");
        Fun open=(Fun)mylib.resolve("add");    //援引 add() 函数
        if (open)                  //是否成功连接上 add() 函数
        {
            QMessageBox::information(NULL,"OK","Link to Function is OK!");
            result=open(5,6);      //这里函数指针调用dll中的 add() 函数
            qDebug()<<result;
        }
        else
            QMessageBox::information(NULL,"NO","Linke to Function is not OK!!!!");
    }
    else
        QMessageBox::information(NULL,"NO","DLL is not loaded!");
        return 0;  //加载失败则退出
}
myDLL.dll为自定义的dll文件,将其复制到程序的输出目录下即可调用。


参考

https://blog.csdn.net/zhang1988pan/article/details/70240010

https://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html

https://www.cnblogs.com/sankye/p/5951852.html

猜你喜欢

转载自blog.csdn.net/Kalenee/article/details/80932949