VS2019生成的DLL,给QT(MinGW版本)使用的小结

  • VS2019端:

a 基于生成一个DLL的工程(要注意生成是x86,还是x64的,需要和后面的QT的App工程对应),这里不多解释了,网上多的是;

b 在cpp实现文件里,假如要导出一个这样的函数:

int add(int a, int b)
{
return a+b;
}

那么,它对应的头文件,如abc.h,一定如下:即在头文件里,使用了extern "C"来限制这个函数名,这样的目的是在c++编译器下,产生c语言的编译链接规则:

#ifdef __cplusplus
extern "C" {
#endifint add(int a, int b);#ifdef __cplusplus
}
#endif

(具体c++和c语言编译链接规则extern "C",参考:extern “C”的作用详解 - 狂奔~ - 博客园 (cnblogs.com)icon-default.png?t=N6B9https://www.cnblogs.com/xiangtingshen/p/10980055.html

注意,上述的cpp实现文件的函数名前,不要加extern "C"。

c 为了产生lib文件,在VS2019工程里添加def文件,这样的目的是生成DLL后导出的函数名为add,而不是乱七八糟的添加@各种前缀;还有一个目的是生成DLL的同时,还会生成lib文件,即如果不添加def文件,默认是不会产生lib文件的。

LIBRARY
EXPORTSadd @1

d 编译工程,产生DLL后,一定使用VS2019环境——【工具】——【VS命令提示】检查一下产生的dll是否符合预期要求:

在弹出的控制台输入命令:dumpbin /exports abc.DLL

 如上图,可以看到导出的函数名为add。

QT端:

a 生成一个基于exe的App工程,注意32位/64位,一定和上面VS工程对应;

b 在pro工程文件里添加上面VS2019生成的DLL工程引用:

LIBS += "C:/abc/Debug/abc.lib"

(注意,这里添加的是lib文件名,测试引用DLL文件名也可以!)

c 引用上面VS产生的头文件abc.h,在cpp里直接使用add函数即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/94008.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA关闭项目,但是后台程序没有关闭进程(解决方案)

最近遇到一个很奇怪的问题,idea关闭项目后,系统进程没有杀死进程,再次执行的时候会提示端口占用,并提示Process exited with an error: 1 (Exit value: 1) 错误原因:应用程序关闭后,进程不能同步关闭 解决方…

【Nginx17】Nginx学习:目录索引、字符集与浏览器判断模块

Nginx学习:目录索引、字符集与浏览器判断模块 今天要学习的内容有几个还是大家比较常见的,所以学习起来也不会特别费劲。对于目录的默认页设置大家都不会陌生,字符集的设置也比较常见,而浏览器的判断这一块,可能有同学…

LeetCode ——二叉树篇(三)

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 二叉树的定义及创建见: LeetCode ACM模式——二叉树篇(一)_要向着光的博客-CSDN博客 目录 116. 填充每个节点的下一个右侧节点指针 117. 填…

Doris2.0时代的一些机遇和挑战!

300万字!全网最全大数据学习面试社区等你来! 上个周五的时候,Doris官宣了2.0版本,除了在性能上的大幅提升,还有一些特性需要大家特别关注。 根据官网的描述,Doris在下面领域都有了长足进步: 日志…

python的 __all__ 用法

一、介绍 在Python中,__all__通常用于定义模块的公开接口。在使用from module import *语句时,此时被导入模块若定义了__all__属性,则只有__all__内指定的属性、方法、类可被导入;若没定义,则导入模块内的所有公有属性…

嵌入式系统中如何选择RTC电池?

RTC(Real Time Clock)是一种用于提供系统时间的独立定时器,它可以在系统断电或低功耗模式下继续运行,只需要一个后备电池作为供电源。在嵌入式系统中,选择合适的RTC电池时非常关键的,它会影响系统时间的准确…

pyqt和ros结合使用接受相机和点云消息并展示(附代码)

代码是 ROS 节点的 Python QT脚本,用于订阅 /turtle1/cmd_vel、/tracking_image 和 /test_pointcloud 话题。 脚本首先通过 ps 命令检查是否已启动 ROS 主节点,如果没有则启动一个新的 ROS 主节点。然后,它订阅 /turtle1/cmd_vel、/tracking_image 和 /test_pointcloud 话题…

Git 常用操作

一、Git 常用操作 1、Git 切换分支 git checkout命令可以用于三种不同的实体:文件,commit,以及分支。checkout的意思就是对于一种实体的不同版本之间进行切换的操作。checkout一个分支,会更新当前的工作空间中的文件,…

【日常积累】HTTP和HTTPS的区别

背景 在运维面试中,经常会遇到面试官提问http和https的区别,今天咱们先来简单了解一下。 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果…

爬虫逆向实战(十三)--某课网登录

一、数据接口分析 主页地址:某课网 1、抓包 通过抓包可以发现登录接口是user/login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个password加密参数,还有一个browser_key这个可以写死不需要关心 请求头…

draw.io导出矢量图到word报错text is not svg - cannot display

先参考https://blog.csdn.net/a625750076/article/details/126384831 如果不行,可能是转存的问题 解决方法:直接在draw.io上操作 第一步 第二步 然后再word中粘贴,依旧是矢量图哦!

494. 目标和

494. 目标和 原题链接:完成情况:解题思路:数组回溯法动态规划 参考代码:数组回溯法__494目标和__动态规划 经验吸取 原题链接: 494. 目标和 https://leetcode.cn/problems/target-sum/description/ 完成情况&#…

09- DMA(DirectMemoryAccess直接存储器访问)

DMA 09 、DMA(DirectMemoryAccess直接存储器访问)DMA配置流程 09 、DMA(DirectMemoryAccess直接存储器访问) DMA配置流程 dma.c文件 main.c文件 详见《stm32中文参考手册》表57。

Redis_主从复制

8. 主从复制 8.1 简介 主从库采用读写分离的方式 读操作:主库、从库都可以处理写操作:首先写到主库执行,然后再将主库同步给从库。 实现读写分离,性能扩展 容灾快速恢复 8.2 主从复制步骤 创建一个目录 ,在root下创建一个m…

Snapdragon 8 Gen 3:详解骁龙最新一代处理器的性能与特点

Snapdragon 8 Gen 3正在为下一波最好的安卓手机提供动力。高通的旗舰移动芯片组长期以来一直是安卓手机中最好的芯片组之一,但它在一系列关键领域总是落后于苹果的A系列芯片——A17仿生芯片看起来也不例外。 Snapdragon 8 Gen 2和Galaxy芯片的Gen 2确实缩小了差距…

Centos 防火墙命令

查看防火墙状态 systemctl status firewalld.service 或者 firewall-cmd --state 开启防火墙 单次开启防火墙 systemctl start firewalld.service 开机自启动防火墙 systemctl enable firewalld.service 重启防火墙 systemctl restart firewalld.service 防火墙设置开…

分布式 - 消息队列Kafka:Kafka生产者发送消息的分区策略

文章目录 01. Kafka 分区的作用02. PartitionInfo 分区源码03. Partitioner 分区器接口源码04. 自定义分区器05. 默认分区器 DefaultPartitioner06. 随机分区分配 RoundRobinPartitioner07. 黏性随机分区分配 UniformStickyPartitioner08. 为什么Kafka 2.4 版本后引入黏性分区策…

尚硅谷大数据项目《在线教育之离线数仓》笔记001

视频地址:尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 P003 P004【数仓概念讲的颇为详细】 P018 P019 P020 P021 P022 P023 P024 P003 时间切片:时间回溯,找回以前的数据。 P004【数仓概念讲的颇为详细】 核心架…

07微服务的事务管理机制

一句话导读 在单体应用程序中,事务通常是在单个数据库或单个操作系统中管理的,而在微服务架构中,事务需要跨越多个服务和数据库,这就使得事务管理变得更加复杂和困难。 目录 一句话导读 一、微服务事务管理的定义和意义 二、微…

Kali Linux中常用的渗透测试工具有哪些?

今天我们将继续探讨Kali Linux的应用,这次的重点是介绍Kali Linux中常用的渗透测试工具。Kali Linux作为一款专业的渗透测试发行版,拥有丰富的工具集,能够帮助安全专家和渗透测试人员检测和评估系统的安全性。 1. 常用的渗透测试工具 以下是…