Qt6之vc调用Qt生成无ui的dll

news2025/1/30 16:40:03

Qt可以调用vc生成的dll,反之qt也可以提供生成的dll给其它语言来调用,比如VC、rust等。

一、qt生成dll

在Qt creator加持下已经很容易的生成DLL,如下:

1、新建,库,C++ Library;

 2、类型,选择 Shared Library,qt module选择无,否则纯VC项目必须导入qt库; 

 3、第10行,声明并定义函数add(),最后按ctr b生成(注意这里不是ctrl r运行,是生成,也就是qt所说的“构建”,同时注意默认为debug,左下角切换输出为Release),最后会在Release目录下看到tell.dll和test.lib

 4、导出函数名查看

此时为了确保dll无误,使用来查看dependency walker,打开test.dll,查看函数名(win11可能无响应,请复制test.dll和工具,去win10及一下试试),结果居然是

?add@Test@@QEAAHHH@Z难道不应是add

出现这种情况,你知道在vc中是无法调用成功的,因为函数名在编译时已经发生变化。原因是:C++编译器因为不统一的原因在生成dll时会对导出函数根据编译器进行名字改编,这也就导致原来add变成了 ?add@Test@@QEAAHHH@Z

此时其实大家最常用的方案是利用限定符extern “C”,但是这也意味着类的成员函数无法使用,只能导出全局函数,当然你要觉得dll不想用类的成员函数,那不会有问题直接使用即可。

本文讨论是不使用extern “C”且有类成员函数的情况:

 二、vc调用Qt生成的dll

1、新建控制台项目,并将项目切到Release x64,将dll项目的.lib和.h复制到vs项目目录下,分别添加到头文件和资源文件;

 2、将dll复制到vs生成的exe所在目录下;

 

 3、直接包含头文件,将类实例化,调用函数即可;

 4、将exe和dll复制到没有编译器的环境中测试,也正常如下:

备注:如果一开始建的dll库包含了qt模块,那么后续调用建议用qt creator创建qt widgets项目再去调用dll。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

d3dx9_43.dll是什么文件、d3dx9_43.dll缺失的解决方法

d3dx9_43.dll电脑文件中的dll文件,即动态链接库文件,若计算机中丢失了某个dll文件,就会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错,其安装方法:1、打开浏览器输入“dll修复文件.s…

SpringCloud第三篇:GateWay服务网关

一、为什么需要服务网关: 1、什么是服务网关 传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的…

spring 只读事务 设置异常回滚事务

Transactional(readOnly true) 将当前事务设置为只读事务,在该事务执行过程中只允许select语句执行,delete insert update均不可执行。 该特性的作用是:启动spring的优化策略。提高select语句执行效率。 Transactional(rollbackFor Runtime…

php通过cURL爬取数据(3):CURLINFO_HTTP_CODE返回0的排查和解决方案

CURLINFO_HTTP_CODE返回0的排查和解决方案 一、curl本地服务器需要DNS解析域名二、如何排查错误原因三、无法解析 DNS的程序升级方案四、宝塔配置DNS的操作方法1.etc/resolv.conf2.通过GUI界面 一、curl本地服务器需要DNS解析域名 在使用 curl 命令发送请求到域名地址&#xf…

【LeetCode】304. 二维区域和检索 - 矩阵不可变

304. 二维区域和检索 - 矩阵不可变(中等) 方法一:多个一维前缀和 思路 这道题是303. 区域和检索 - 数组不可变的进阶,第 303 题是在一维数组中做区域和检索,这道题是在二维矩阵中做区域和检索。第303 题中&#xff0…

【23种设计模式】策略模式(State Pattern)

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

使用 Python Selenium 提取动态生成下拉选项

在进行网络数据采集和数据分析时,处理动态生成的下拉菜单是一个常见的挑战。Selenium是一个强大的Python库,可以让你自动化浏览器操作,比如从动态生成的下拉菜单中选择选项。这是一个常见的网页爬虫和数据收集者面临的挑战,但是Se…

C#可视化 家用轿车信息查询系统(具体做法及全部代码)

目录 题目: 效果图: 数据库: 做法: combobox值更新 查询按钮功能(非空验证,查询数据) datagirdview设置 全部代码: DBHelper类 From1主窗体代码 题目: 效果图&#…

Qt Button实现按钮长按事件

Qt Button实现按钮长按事件 背景查资料第3种widget.cpp源文件 最好方法小结 背景 最近项目遇到一个需求,通过鼠标按钮长按一直发数据,鼠标松开立即离开。 想了一会儿大概有了几种思路(仅仅是思路,不一样可以实现) 1.重…

OBS Studio 29.1.2 正式发布

导读OBS Studio 是一款免费且开源的用于视频录制以及直播串流的软件,提供实时高性能的视频 / 音频捕捉与混合,以及无限的场景模式帮助用户通过自定义实现无缝转换。 OBS Studio 29.1.2 现已发布,具体更新内容包括: 在 Windows 设…

[7]PCB设计实验|认识常用元器件|电容器|19:00~19:30

目录 一、电容器的识别 电容的应用 1. 电容有通交流阻隔直流电的作用 2. 有滤波、耦合、旁路作用等 3. 有些电容是有极性,有些是没有极性 二、常见电容器 1. 贴片电容 a、材质瓷片 b、材质钽介质 c、材质电解质 2. 手插电容 a、瓷片电容 b、聚脂电容 …

【计算机组成与体系结构Ⅰ】课程设计——基于Logisim的模型计算机设计

基于Logisim的模型计算机设计 一、实验目的 基于Logisim软件,根据一个模型指令系统,在逐步学习和了解计算机组成各部分逻辑组成和各部分互联的基础上,深入理解课程中的知识点,利用此软件设计并实现一个模拟的8位模型计算机原型。…

NumPy库的学习

本文主要记录的是笔者在B站自学Numpy库的学习笔记。 引入numpy库 import numpy as np矩阵的创建 创建一个二行三列的矩阵。 array np.array([[1,2,3],[2,3,4]])查看array的行数、形状、元素数量 print("number of dim:",array.ndim) print("shape:"…

Sui x KuCoin Labs夏季黑客松|6月8日Suiet Workshop

由Sui和KuCoin Labs联合主办的夏季黑客松正如火如荼的报名中。了解黑客松详情:Sui与KuCoin Labs联合推出夏季黑客松,奖池高达28.5万美金! 👉 黑客松官方网站:Sui x KuCoin Labs Summer Hackathon 活动期间&#xff0…

2023年前端面试汇总-CSS

1. CSS基础 1.1. CSS选择器及其优先级 对于选择器的优先级: 1. 标签选择器、伪元素选择器:1; 2. 类选择器、伪类选择器、属性选择器:10; 3. id 选择器:100; 4. 内联样式:1000&a…

基于BP神经网络对MNIST数据集检测识别(numpy版本)

基于BP神经网络对MNIST数据集检测识别 1.作者介绍2.BP神经网络介绍2.1 BP神经网络 3.BP神经网络对MNIST数据集检测实验3.1 读取数据集3.2 前向传播3.3 损失函数3.4 构建神经网络3.5 训练3.6 模型推理 4.完整代码 1.作者…

EasyX实现简易贪吃蛇

📝个人主页:认真写博客的夏目浅石. 📣系列专栏:夏目的C语言宝藏 文章目录 前言一、头文件包含二、创建蛇与食物的结构体三、游戏的初始化四、游戏的绘画事件五、蛇的移动事件六、输入方向七、生成食物八、吃食物九、游戏失败的判定…

【Python开发】FastAPI 09:middleware 中间件及跨域

FastAPI 提供了一些中间件来增强它的功能,类似于 Spring 的切面编程,中间件可以在请求处理前或处理后执行一些操作,例如记录日志、添加请求头、鉴权等,跨域也是 FastAPI 中间件的一部分。 目录 1 中间件 1.1 创建中间件 1.2 使…

IDEA日常配置和操作小结

✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: IDEA专栏 ✨特色专栏&…

算法刷题-数组-长度最小的子数组

209.长度最小的子数组 力扣题目链接 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s 7, …