QT+winodow 代码适配调试总结(二)

已经好多年了, linux环境下不同版本的QT程序开发和部署,突然需要适配window环境程序调试,一堆大坑,还真是一个艰巨的任务,可是kpi下的任务计划,开始吧!!

1、首先我们自定义的动态库,大多数不规范,所谓跨平台,只能说是QT本身的框架,实际自定义的动态库极其不规范, 大多数的动态库没有实现功能独立的功能,数据重定义和相互依赖是很头疼的事情,趁此机会斩断互相的网,逐步完成动态库的window适配,根据window环境的要求实现;

简单梳理一下过程:

A:自定义动态库中的总会有一个全局的文件,定义库导入和导出的宏

#ifdef AMS_SERVERDLL_EXPORTS
        #define MODBUSTCP_AMS_SERVERDLL_API Q_DECL_EXPORT
#else
        #define MODBUSTCP_AMS_SERVERDLL_API Q_DECL_IMPORT
#endif

B: 重点注意pro文件中需要包含:

DEFINES += AMS_SERVERDLL_EXPORTS

C: 对于暴露给外部调用的类,需要增加MODBUSTCP_AMS_SERVERDLL_API的约束,否则主程序调用会提一堆:LNK2019: 无法解析的外部符号 

2、其次:linux环境移动过来的动态库编码格式不统一,网上很多高招,尝试一遍不是很理想,尽管各种位置的设置UTF-8 , 代码中中文字符和中文注释成了调试的大问题,莫名其妙的问题,总结一下终极的方案: 下载安装Notepad++ 工具,针对莫名其妙问题的代码进行格式转换,转为UTF-8 BOM格式保存,问题就会解决成千上万;

3 另外程序运行之后弹窗和打印的日志为乱码,问题不是很严重,也很容易解决,方案如下:

在项目文件pro文件中增加下面语句:

win32:msvc{    QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}

4 对于调用mysql驱动的问题,linux环境需要安装mysql的客户端,window环境下不需要安装,但是需要可执行程序的位置拷贝libmysql.dll 驱动文件。

5、linux环境下 数据初始化可以使用变量初始化,但window环境下不允许

例如:

int iDataCnt = 100;

int iParam[iDataCnt ];

这种linux环境下可以,但window环境不可以,window环境下不能使用变量,可以使用宏定义

int iParam[100]; 或者

#define  DATA_CNT  100

int iParam[DATA_CNT];

6、类似数据函数和宏定义M_PI  window 无法识别,需要再pro 增加

DEFINES += _USE_MATH_DEFINES

7、其他入结构体对象和qvector赋初值,不允许直接通过 {}的方式,需要通过对象的单独赋值

例如:

Act act;

act.act = false;

act.row = 12;

act.col = 34;

不允许

Act act{false, 12, 34};

其他的问题有时间继续补充。

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

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

相关文章

【PYTORCH,TENSORFLOW环境配置,安装,自用代码】

conda -V(查看版本,这步不要也罢) conda create -n test python3.7(创建环境) conda activate test(激活) conda env list(查看自己的环境) nvidia-smi(查…

以太网电缆专家手册:掌握RJ45连接器压接的艺术与科学

在这个日新月异的数字时代,正确的连接方式至关重要,而RJ45连接器正是实现这一点的关键工具之一。无论您是在家中布置办公网络,还是在公司部署复杂的IT基础架构,或是进行任何需要设备间高效数据传输的活动,掌握如何正确…

【深度学习】调整加/减模型用于体育运动评估

摘要 一种基于因果关系的创新模型,名为调整加/减模型,用于精准量化个人在团队运动中的贡献。该模型基于明确的因果逻辑,将个体运动员的价值定义为:在假设情景下,用一名价值为零的球员替换该球员后,预期比赛…

获取onnx模型输入输出结构信息的3种方式:ONNX、onnxruntime、netron

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

每日Attention学习7——Frequency-Perception Module

模块出处 [link] [code] [ACM MM 23] Frequency Perception Network for Camouflaged Object Detection 模块名称 Frequency-Perception Module (FPM) 模块作用 获取频域信息,更好识别伪装对象 模块结构 模块代码 import torch import torch.nn as nn import to…

【Python函数编程实战】:从基础到进阶,打造代码复用利器

文章目录 🚋前言🚀一、认识函数🌈二、函数定义❤️三、函数调用⭐四、实参与形参💥1. 形式参数🚲2. 实际参数🔥1. 位置参数☔2. 关键字参数🎬3. 默认参数🔥4. 可变数量参数(不定长参…

Nomad Web 1.0.12还能这样

大家好,才是真的好。 前几天讲代码和开发,忽略了大家的真实感受,那就是不爱开。我也记起来我们很久没有讲Notes/Domino产品的更新,因为除了补丁程序外,确实没多少更新。 不过就在前两天,有一项产品得到了…

零成本、高效率:免费可视化工具的魅力所在

在如今这个数据驱动的时代,免费可视化工具越来越受到人们的欢迎。这些工具不仅降低了数据分析的门槛,还为用户提供了强大的功能和极高的灵活性,使得各行各业的人们都能够轻松地利用数据做出明智的决策。首先,免费可视化工具的零成…

【Qt】认识Qt界面Hello world小程序

一.认识Qt界面 1.左边栏 在编辑模式下,左边竖排的两个窗⼝叫做 "边栏" 。 ① 是项⽬⽂件管理窗⼝ ② 是打开⽂件列表窗⼝。 边栏⾥的窗⼝数⽬可以增加,边栏⼦窗⼝标题栏有⼀排⼩按钮,最右边的是关闭按钮,倒数第⼆个是 …

嵌入式学习——硬件(IIC、ADC)——day56

1. IIC 1.1 定义(同步串行半双工通信总线) IIC(Inter-Integrated Circuit)又称I2C,是是IICBus简称,所以中文应该叫集成电路总线。是飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备…

猫头虎 Gemma和Gemini模型的区别是什么?

猫头虎 🐯 Gemma和Gemini模型的区别是什么? 摘要📘 在这篇文章中,我们将深入探讨Gemma和Gemini这两个由Google开发的AI模型。我们会对比它们的参数规模、计算资源需求和集成难度,帮助大家了解这两者之间的主要区别。…

【解锁未来:深入了解机器学习的核心技术与实际应用】

解锁未来:深入了解机器学习的核心技术与实际应用 💎1.引言💎1.1 什么是机器学习? 💎2 机器学习的分类💎3 常用的机器学习算法💎3.1 线性回归(Linear Regression)&#x1…

Redis集群-主从复制、哨兵

●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。 主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障 恢复无法自动化;写操作无法负载均…

幻兽帕鲁服务器如何安装模组安装

由于模组多数为Window版本的,所以本教程以服务端为Window的作为演示(Linux服务端的也是一样的操作)百度莱卡云开服 如果你你是Linux版本的,请点击跳转切换服务端教程 接下来是本地安装模组包的方法(服务器自带&#xf…

妙笔 WonderPen 专业版会员值得购买吗?

在信息爆炸的时代,写作已经是一项重要技能。无论是学生、职场人士还是自由职业者,都经常需要写点东西。 一个好的工具能让写作成为享受,今天就为大家推荐专业写作工具:妙笔。为长文写作设计,且有云服务功能&#xff0…

自闭症儿童能不能用药

在星贝育园自闭症儿童康复学校,我们一直秉持着谨慎且保守的态度对待自闭症儿童的用药问题。我们坚定地认为,在大多数情况下,药物并非自闭症儿童康复的首选。 自闭症是一种神经发育障碍,其核心症状包括社交沟通障碍、重复刻…

为什么网络爬虫广泛使用HTTP代理?

一、引言 网络爬虫作为自动抓取互联网信息的重要工具,在现代社会中发挥着不可或缺的作用。然而随着网络环境的日益复杂,网站反爬虫技术的不断进步,网络爬虫在获取数据的过程中面临着越来越多的挑战。为了应对这些挑战,HTTP 代理成…

C++专业面试真题(1)学习

进程有多少种状态,如何转换 创建:一个进程启动,首先进入创建状态,需要获取系统资源创建进程管理科PCB完成资源分配。就绪态:在创建完成后,进程已经准备好,处于就绪状态,但是还未获得…

Linux内核——Linux内核体系模式(二)

1 Linux系统的中断机制 Linux内核将中断分为两类:硬件中断和软件中断(异常)。每个中断是由0-255之间的一个数字进行标识。 中断int0-int31(0x00-0x1f)作为异常int32-int255由用户自己设定 int32-int47对应与8259A中断…

PCL 基于点云RGB颜色的区域生长算法

RGB颜色的区域生长算法 一、概述1.1 算法定义1.2 算法特点1.3 算法实现二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 算法定义 点云RGB区域生长算法: 是一个基于RGB颜色信息的区域生长算法,用于点云分割。该算法利用了点云中相邻点之间的颜色相似性来将点云分割成…