QT下跨平台库实现及移植经验分享

最近在移植公司一个QT桌面软件到android上,有一些公司自定义的库,用了很多windows的api,移植过程很是曲折,在此有一些感悟分享一下~

一.自编写跨平台库

1.有时候为了程序给第三方用需要编译一些qt封装库,并可能跨平台使用,比如会在windows桌面系统、linux系统及android系统使用,所以在开始写的时候最好不要用windows本身的api,不然跨平台移植的时候全部要更换,非常麻烦;

比如下面这些文件的接口:

#include <direct.h>

#include<winsock2.h>

#include<windows.h>

2.尽量要用POSIX标准c或者标准c++接口,如POSIX线程(pthreads),网络接口,尽量用纯c语言编写,这样方便跨平台移植;

POSIX标准,全称为"可移植操作系统接口"(Portable Operating System Interface),是由IEEE计算机学会制定的一系列标准,旨在提高不同操作系统之间的兼容性。

许多操作系统,包括Unix、Linux以及某些版本的Microsoft Windows,都支持POSIX标准。

3.下面举一个简单的sleep函数例子,如果用POSIX标准c的sleep函数,在windows和android都可以用,不用修改,在qt也是一样:

(1)代码:

include "mainwindow.h"

#include "ui_mainwindow.h"

#include <unistd.h>

#include <QDebug>

#include <QDateTime>

#define SleepKK(x) usleep(x*1000) //微秒

#define SleepSS(x) sleep(x)

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

qDebug()<<"time print:";

qDebug() << "Current_date_and_time start: " << QDateTime::currentDateTime();

SleepSS(1);

qDebug() << "Current_date_and_time start_1: " << QDateTime::currentDateTime();

SleepSS(10);

qDebug() << "Current_date_and_time start_2: " << QDateTime::currentDateTime();

SleepKK(5000);

qDebug() << "Current_date_and_time start_3: " << QDateTime::currentDateTime();

}

(2)结果:

二.QT延时五种实现方法

QT下是没有直接可用的延时sleep函数的,但有时候后需要延时,所以需要自己定义一个延时函数,方法有多种,具体见之前文章《QT延时五种实现方法》:

https://blog.csdn.net/xieliru/article/details/135435815?spm=1001.2014.3001.5502

相关推荐
职场的momo10 分钟前
11个后端与AI岗位同时开放:Java、网关、推理优化怎么匹配
java·开发语言·人工智能
蓝速科技15 分钟前
蓝速科技丨新旧楼宇混杂场景下会议室预约门牌屏一体化改造方案
开发语言·科技·php
梦想的旅途21 小时前
Python实现企业微信文本消息发送
开发语言·python·企业微信
丰锋ff1 小时前
基于 Qt 的智能门禁系统
qt·学习
大鹏说大话2 小时前
美业微信会员系统哪个好
开发语言
程序员与背包客_CoderZ2 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
钱栈up2 小时前
Mac 开发机一键发版不用切环境:我这样改造了团队的后端部署脚本Maven编译卡住20分钟?我靠两步定位到2处隐蔽编译错误
开发语言·python·macos
william_yangshun3 小时前
【大模型部署实战】kimi-k3-in-c 中文版:用 176KB 纯 C99 引擎在 CPU 上跑 Kimi K3 上手指南
c语言·开发语言
Sagittarius_A*3 小时前
Burst Lab | PHP 审计 14|反序列化(四):字符串逃逸与绕过技巧
开发语言·安全·php·web·反序列化
名字还没想好☜3 小时前
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)
开发语言·后端·算法·golang·go