VS2019+QT5.15调用动态库dll带有命名空间

VS2019+QT5.15调用动态库dll带有命名空间

vs创建动态库

参考:

QT调用vs2019生成的c++动态库-CSDN博客

demo的dll头文件:

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLL3_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef DLL3_EXPORTS
#define DLL3_API __declspec(dllexport)
#else
#define DLL3_API __declspec(dllimport)

#endif

// 此类是从 dll 导出的
class DLL3_API CDll3 {
public:
	CDll3(void);
	int name;
	int age;

	// TODO: 在此处添加方法。
};

extern DLL3_API int nDll3;
extern DLL3_API CDll3;


	//extern "C"
namespace MathFunc
	
	{
	extern "C" {
		DLL3_API int fnDll3(void);
		DLL3_API int fnAdd(int a, int b);
		DLL3_API int fnSub(int a, int b);
	}
		
	}



 cpp

// Dll3.cpp : 定义 DLL 的导出函数。
//

#include "pch.h"
#include "framework.h"
#include "Dll3.h"


// 这是导出变量的一个示例
DLL3_API int nDll3=666666;

// 这是导出函数的一个示例。
namespace MathFunc
{
     int fnDll3(void)
    {
        return 666;
    }
     int fnAdd(int a, int b)
     {
         return a + b;
     }
     int fnSub(int a, int b)
     {
         return a - b;
     }
}

   /* DLL3_API int fnDll3(void)
    
    {
        return 666;
    }

    DLL3_API int fnAdd(int a, int b)
    {
        return a + b;
    }

    DLL3_API int fnSub(int a, int b)
    {
        return a - b;
    }*/



   



    


// 这是已导出类的构造函数。
CDll3::CDll3()
{
    return;
}


创建c++控制台项目调用测试:

把头文件.h与dll,lib拷贝到项目文件夹里面

VS创建QT项目调用测试:

创建项目后:

把头文件.h与dll,lib拷贝到项目文件夹里面

 头文件夹,右键添加现有项,选择Dll3.h

cpp文件调用测试:

#include "QtWidgetsApplication5.h"
#include "Dll3.h"
#pragma comment (lib,"Dll3.lib")
#include <qmessagebox.h>
#pragma execution_character_set("utf-8")

QtWidgetsApplication5::QtWidgetsApplication5(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    int aa=MathFunc::fnAdd(1,2);
    QMessageBox::information(this,"title","加法结果:"+QString::number(aa));

    int aa2 = MathFunc::fnSub(9, 2);
    QMessageBox::information(this, "title", "减法结果:" + QString::number(aa2));

    

}

QtWidgetsApplication5::~QtWidgetsApplication5()
{}

报错解决方法参考:

vs QT项目E0898 非成员运算符要求类类型或枚举类型的参数C1083: ‘type_traits-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CST软件眼图工具Eye Diagram Tools (中)--- Classical流程

距离上次眼图介绍快两年了&#xff0c;由于上期已经将重点推荐的方法&#xff08;statistical流程&#xff09;介绍了&#xff0c;所以一直没急着涉及这个话题。 仿真实例011&#xff1a;眼图工具Eye Diagram Tools&#xff08;上&#xff09; 先总结一下之前介绍过的内容&am…

Java对象的序列化与反序列化

序列化和反序列化是什么 当两个进程远程通信时&#xff0c;彼此可以发送各种类型的数据。无论是何种类型的数据&#xff0c;都会以二进制序列的形式在网络上传送。比如&#xff1a;我们可以通过http协议发生字符串信息&#xff1b;我们也可以在网络上直接发生Java对象。发送方…

佐西卡在美国InfoComm 2024展会上亮相投影镜头系列

6月12日至14日&#xff0c;2024美国视听显示与系统集成展览会将在拉斯维加斯会议中心盛大开幕。这场北美最具影响力的视听技术盛会&#xff0c;将汇集全球顶尖的视听解决方案&#xff0c;展现专业视听电子系统集成、灯光音响等领域的最新技术动态。 在这场科技盛宴中&#xff0…

数据可视化后起之秀——pyecharts

题目一&#xff1a;绘制折线图&#xff0c;展示商家A与商家B各类饮品的销售额 题目描述&#xff1a; 编写程序。根据第9.3.1&#xff0c;绘制折线图&#xff0c;展示商家A与商家B各类饮品的销售额。 运行代码&#xff1a; #绘制折线图&#xff0c;展示商家A与商家B各类饮品的…

油气管道可视化:推动行业智慧化发展

图扑油气管道可视化系统集成多源数据&#xff0c;提供全景监控与预警功能&#xff0c;增强管道管理的安全性和响应速度&#xff0c;驱动行业智慧升级。

PS系统教程16

图案图章工具-印象派效果 另一种用法-印象派效果 新建图层选择图案进行绘画 如果绘画效果不强 进行画笔设置 选择复位所有锁定位置 将画笔改为硬边缘 为什么没有出来雨点效果 因为我们选择了印象派 新建图层取消勾选印象派 基本用法&#xff1a;可以去做图案和背景 使用…

充电宝哪个牌子最耐用最值得入手?多维度实测三款充电宝

在如今这个手机不离手的时代&#xff0c;充电宝已然成为我们生活中不可或缺的伙伴。但面对市场上琳琅满目的充电宝品牌和产品&#xff0c;我们常常陷入纠结&#xff1a;充电宝哪个牌子最耐用最值得入手呢&#xff1f;为了给大家提供最真实、最实用的参考&#xff0c;我们精心挑…

政安晨【零基础玩转各类开源AI项目】解析开源:gradio:在Python中构建机器学习Web应用

目录 下载项目 快速开始 Gradio能做什么&#xff1f; Hello, World Interface 类 组件属性 多输入和输出组件 一个图像示例 Blocks: 更加灵活且可控 你好, Blocks 更多复杂性 尝试 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏…

Stable Diffusion 改变光线的能力简直太强大了!

在没有 Stable Diffusion 的年代&#xff0c;对照片的光线进行后期处理&#xff0c;基本要依靠 Photoshop。比如添加一个曝光图层。这个技术对于形状简单的物体来说很方便&#xff0c;因为光线效果很好模拟。但对于形状复杂的主体&#xff0c;比如人来说&#xff0c;要想实现自…

革新内容创作:AI生成工具的力量

作为一名AI爱好者&#xff0c;我积累了许多实用的AI生成工具。今天&#xff0c;我想分享一些我经常使用的工具&#xff0c;这些工具不仅能帮助提升工作效率&#xff0c;还能激发创意思维。 我们都知道&#xff0c;随着技术的进步&#xff0c;AI生成工具已经变得越来越智能&…

游戏试玩站打码zq平台系统可运营的任务网源码

安装说明 1.恢复数据&#xff1b; 2.数据连接库配置路径&#xff1a;protected\config\mail.php 文件中修改第60行 &#xff08;记得不要用记事本修改&#xff0c;否则可能会出现验证码显示不了问题&#xff0c;建议用Notepad&#xff09; 3.浏览器访问输入 127.0.0.2 显示界…

NOSQL -- MOGODB

Mogodb简介: 是一个开源的, 高性能, 无模式的文档型数据库. NoSql数据库产品当中的一种, 也是最像关系型数据库的非关系型数据库 使用场景: 针对不同的应用场景, 以及其对应的修改对应数据的频率, 我们可以以此选择需要哪一种类型的数据库 Mongo的使用: 启动: 在解压完成之后…

使引用作为函数参数将变量i和j的值互换

C之所以增加引用机制&#xff0c;主要是把它作为函数参数&#xff0c;以扩充函数传递数据的功能。 解题思路&#xff1a; 传递变量的地址。形参是指针变量&#xff0c;实参是一个变量的地址&#xff0c;调用函数时&#xff0c;形参&#xff08;指针变量&#xff09;得到实参变…

【计算机毕业设计】258基于微信小程序的课堂点名系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

聚焦新版综合编程能力面试考查汇总

目录 一、业务性编程和广度能力考查 &#xff08;一&#xff09;基本定义 &#xff08;二&#xff09;必要性分析 二、高频考查样题&#xff08;编程扩展问法&#xff09; 考题1: 用java 代码实现一个死锁用例&#xff0c;说说怎么解决死锁问题&#xff1f;&#xff08;高…

测试开发面经分享,面试七天速成 DAY 1

1. get、post、put、delete的区别 a. get请求&#xff1a; i. 用于从服务器获取资源。请求参数附加在URL的查询字符串中。 ii. 对服务器的请求是幂等的&#xff0c;即多次相同的GET请求应该返回相同的结果。 iii. 可以被缓存&#xff0c;可以被收藏为书签。 iv. 对于敏感数据不…

第26讲:Ceph集群OSD扩缩容中Reblanceing数据重分布

文章目录 1.Reblanceing数据重分布的概念2.验证Reblanceing触发的过程3.Reblanceing细节4.临时关闭Reblanceing机制 1.Reblanceing数据重分布的概念 当集群中OSD进行扩缩容操作后&#xff0c;会触发一个Reblanceing数据重分布的机制&#xff0c;简单的理解就是将扩缩容前后OSD…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎的构建与初步实践

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

基本元器件 - 晶体三级管

目录 区分极性 不同封装引脚辨认 基本电流关系 输出伏安特性 阻容耦合放大电路 晶体管的工作状态 三极管的主要参数 判断三极管的工作状态 估算法 图解法 基本放大电路 晶体三极管是一种 电流控电流 的元器件。 区分极性 除基极外&#xff0c;带箭头是发射极&…

优化LLM Prompt:降低使用成本和响应延迟的实用技巧

编者按&#xff1a; LLMs 被视为 AI 领域的一个里程碑式的突破&#xff0c;但要将其应用于实际生产环境&#xff0c;并且还能用对、用好并非易事。模型的使用成本和响应延迟是目前将大语言模型&#xff08;LLMs&#xff09;应用于生产环境中的核心难题之一。 在本期刊载的这篇文…