QT 动态加载dll

   日期:2020-04-29     浏览:99    评论:0    
核心提示:最近在调用卡尔的库函数时候,发现他们仅仅提供了一个dll,于是百度调研QT动态加载dll的方式,在调

最近在调用卡尔的库函数时候,发现他们仅仅提供了一个dll,于是百度调研QT动态加载dll的方式,在调用成功后分析给大家。

动态调用。在使用的时候才会加载dll进来,使用QT本身自己的加载机制,利用QLibrary进行动态加载。
 

typedef void (*CB_AnswerData)(const char *pBuf,int iLen);
typedef int (*FunCardcallback)(CB_AnswerData );

void cardInfoCallback(const char *pBuf,int iLen)
{
}

void MainWindow::on_pushButton_3_clicked()
{
    if(true)
    {
        QLibrary lib("KeUsbHid.dll");

        if(lib.load())
        {

            qDebug() << "load DLL succeed";

            //usb回调
            try
            {
                FunUSBcallback usbBack=(FunUSBcallback)lib.resolve("_KERECEIVER_SetUSBStatusCallBack@4");
               
            }
            catch (...)
            {
                qDebug() << "usb   catch---------------------catch";
            }
        }
        else
        {

        }
    }
}

注意事项:

(1)dll中的函数我们在调用过程中,需要在调用类中重新写一个带有形参个数和类型都一样的函数,就像本文的FunCardcallback,它在这里是作为回调函数使用的。

(2)包含头文件#include "QLibrary"。

(3)把调用的dll放在exe所在路径中。

(4)分享一个小工具用于查看dll的函数原型,Stud_PE.exe。这个可以查看dll的导出表。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服