码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Qt动态链接库


    前言

    动态链接库可分为两种:第一种隐式,第二种显式,两者具有各自的优点,接下来详细介绍。

    注意:在创建库的时候选用共享库

    隐式链接:

    其他方法于静态链接库一样 但是要在include中添加动态库自动生成的_global.h 并且在新项目的目录下添加在debug和release状态下生成的dll文件

    显式链接:

    在写调用函数的时候 一定要是这样的形式:extern "C" void ReadCamera(int);*

    否则在使用过程中会出错。

    前提:将共享库中生成的dll文件 添加于exe所在目录下

    在头文件加入QLibrary类 在实现显式加载动态库中需要使用

    typedef void (*FUNC)(int *cameraNum); 显示调用动态库里的函数 需要声明函数原型的类型 申请动态库 这里名称可加可不加.dll

    1. int x= ui->lineEdit->text().toInt();
    2. int y= ui->lineEdit_2->text().toInt();
    3. QLibrary library("mySharedLib");
    4. if(!library.load())
    5. {
    6. ui->lineEdit_3->setText("QLibrary error");
    7. return;
    8. }
    9. else
    10. {
    11. FUNC func = (FUNC)library.resolve("read");
    12. if (!func)
    13. {
    14. ui->lineEdit_3->setText("Resolve function error!");
    15. return;
    16. }
    17. int ans = x;
    18. func(&ans);
    19. QString str=QString::number(ans);
    20. ui->lineEdit_3->setText(str);

    library.load() 用于判断dll文件和exe是否在同一目录下,如果不在同一目录下,会访问失败

    library.resolve(“read”); 这里是用于解析 需要调用的函数,当这句话出现错误时,是由于在生成dll文件的时候没有使用extern “C”

    显式于隐式的区别

    显式:在使用的时候即使用即拿,在占据内容等方面就有一定的有事,并且在使用结束之后就可以对其进行卸载,但是在代码书写较多,不方便使用。

    隐式:他是从最开始就会加载出来,只有在程序结束的时候才会被卸载。但是他在最开始调用的时候会比较麻烦,使用起来方便。

     本文福利, 免费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

  • 相关阅读:
    运算放大器实现多路同向反向加减运算电路公式推导(二)
    一个与 WSL2 建立远程的简单方法
    HttpClient的setConnectionRequestTimeout、setConnectTimeout、setSocketTimeout设置注意事项
    Spring Boot 中使用 JSON Schema 来校验复杂JSON数据
    SpringCloud Alibaba - Nacos
    通过shell批量更新多台linux上jar包
    10kb的照片尺寸怎么弄?几个步骤轻松搞定!
    UDP服务端丢包-发送频率过高导致丢包
    一、C#委托、事件、Action、Func
    SG-Former实战:使用SG-Former实现图像分类任务(一)
  • 原文地址:https://blog.csdn.net/m0_60259116/article/details/127674091
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号