当前位置: 首页 > news >正文

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.lryc.cn/news/127809.html

相关文章:

  • c++--SLT六大组件之间的关系
  • 解析个人信息保护影响评估
  • 2.阿里云对象存储OSS
  • (三)Unity开发Vision Pro——入门
  • 召集令:CloudQuery 社区有奖征文活动来啦!
  • 【傅里叶级数与傅里叶变换】数学推导——1、基础知识点回顾及[Part1:三角函数的正交性]介绍
  • BUUCTF [MRCTF2020]Ezpop解题思路
  • 【IMX6ULL驱动开发学习】07.驱动程序分离的思想之平台总线设备驱动模型和设备树
  • 深度学习中的python语法笔记总结
  • Reids 的整合使用
  • Vue3 —— watchEffect 高级侦听器
  • Java异步子线程读取主线程参数的若干好玩场景
  • Android 视频开发
  • 【计算机网络篇】UDP协议
  • LeetCode 2682. 找出转圈游戏输家
  • 数据结构单链表
  • 自定义WEB框架结合Jenkins实现全自动测试
  • PHP加密与安全的最佳实践
  • SQL Server数据库无法连接
  • videojs 播放视频
  • vue强制刷新变量
  • [QCA6174]QCA6174 5G WiFi DFS处理逻辑分析及雷达误检率高优化规避
  • 预防SQL漏洞注入和规避网络攻击
  • 《Go 语言第一课》课程学习笔记(一)
  • 网络安全 Day29-运维安全项目-iptables防火墙
  • SQL 复习 03
  • 出现 sudo: docker: command not found 的解决方法
  • FastApi-1-结合sql 增/查demo
  • Spring学习笔记3
  • springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本