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};

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

相关推荐
你真是饿了16 分钟前
1.C++入门基础
开发语言·c++
天天进步201520 分钟前
Python全栈项目:实时数据处理平台
开发语言·python
Tipriest_20 分钟前
Python中is关键字详细说明,比较的是地址还是值
开发语言·python
sheji341621 分钟前
【开题答辩全过程】以 基于Python的餐饮统计系统的设计和实 现为例,包含答辩的问题和答案
开发语言·python
elseif12322 分钟前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论
catchadmin23 分钟前
2026 年 PHP 前后端分离后台管理系统推荐 企业级方案
开发语言·php
LGL6030A32 分钟前
Java学习历程26——线程安全
java·开发语言·学习
遨游xyz34 分钟前
排序-快速排序
开发语言·python·排序算法
傻啦嘿哟1 小时前
Python操作PDF页面详解:删除指定页的完整方案
开发语言·python·pdf
Data_Journal1 小时前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php