Qt的64位程序与32位程序的通信

news/2024/7/8 9:12:01 标签: qt, 数据库, 开发语言

目的

最近工作遇上了64位程序调用32位程序的问题,为什么调用32位程序,因为,客户方只提供了32位的程序,没有办法,只能这样,32位程序,当前也是很通用的程序,只能想办法解决64位程序调用32位的程序。
正式说法是这样:
在64位程序中调用32位的库是不被支持的,因为32位和64位程序在内存寻址、数据结构和调用约定等方面存在根本差异。尝试这样做通常会导致运行时错误或程序崩溃。
直接调用肯定不行,32位程序与64位程序的进程布局、指针长度等都不同,所以两者不能直接调用。
只能走进程间通信的方式,进程间通信,最高效的方式就是共享内存了。
参考网站:
https://zhuanlan.zhihu.com/p/628580121
https://blog.csdn.net/slty_123/article/details/135834828
https://blog.csdn.net/github_37290846/article/details/139243143

情况

公共通信结构

定义通信的数据结构,这里需要注意的是,64位与32位程序的一些数据类型的长度是不样的,因此,我们要用长度定死的那些数据类型,这非常关键,传指针,肯定也不行

#ifndef SHAREDDATA_H
#define SHAREDDATA_H
#include <QMetaType>
#include <QSharedData>
struct SharedData : public QSharedData {
   
    qint32 magicNumber; // 用于验证数据完整性的魔数
    qint32 dataSize;    // 数据大小(如果需要的话)
    // ... 其他数据成员 ...
    char data[256];    // 示例数据缓冲区
    // 默认构造函数
    SharedData() : magicNumber(0x12345678), dataSize(0) {
   
        // 初始化数据...
    }
    // 静态元类型注册(如果需要的话)
    static void registerMetaType() {
   
        qRegisterMetaType<SharedData>("SharedData"

http://www.niftyadmin.cn/n/5536925.html

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的生日聚会(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

Debezium日常分享系列之:Debezium 2.7.0.Final发布

Debezium日常分享系列之:Debezium 2.7.0.Final发布 一、重大改变1.core2.Oracle3.PostgreSQL4.SQL Server二、新功能和改进1.Core交易元数据编码排序阻止增量快照改进快照和流之间的可选延迟2.DB2在 z/OS 上支持 Db23.JDBCMariaDB 方言支持4.MariaDB可以禁用快照行计数估计5.M…

Vue.js 案例——商品管理

一.需要做出的效果图&#xff1a; 二.实现的步骤 首先&#xff0c;先建一个项目&#xff0c;命名Table&#xff0c;在Table项目中的components里新建一个MyTable.vue文件。 第二步&#xff0c;在原有的 HelloWorld.vue中写入代码。 HelloWorld.vue代码如下&#xff1a; <…

【Java】CompletableFuture+Mockito单元测试不通过 Unnecessary stubbings detected

文章目录 问题描述问题分析解决Thread.sleepget()Mockito.lenient() 问题描述 有个接口使用CompletableFuture实现的异步调用&#xff0c;现在要用Mockito写单元测试 Testpublic void updateNumAsync() {Integer newNum 600;// updateRoleCountAsync用CompletableFuture异步调…

【免费资料】IEEE33节点系统参数及拓扑图visio

主要内容 对于初学配电网的同学&#xff0c;最经典的系统即是33节点配电网系统&#xff0c;在各个研究文献中出现频次最高的也是这个系统&#xff0c;为了让大家更好了解33节点系统参数&#xff0c;本次整理了系统节点、支路参数excel以及33节点网络拓扑图visio&#xff0c…

二维舵机颜色追踪,使用树莓派+opencv+usb摄像头+两个舵机实现颜色追踪,采用pid调控

效果演示 二维云台颜色追踪 使用树莓派opencvusb摄像头两个舵机实现颜色追踪&#xff0c;采用pid调控 import cv2 import time import numpy as np from threading import Thread from servo import Servo from pid import PID# 初始化伺服电机 pan Servo(pin19) tilt Serv…

累积分布函数的一些性质证明

性质1&#xff1a; E [ X ] ∫ 0 ∞ ( 1 − F ( x ) ) d x − ∫ − ∞ 0 F ( x ) d x ( 1 ) E[X]\int_0^{\infty}(1-F(x))dx - \int_{-\infty}^0F(x)dx\quad (1) E[X]∫0∞​(1−F(x))dx−∫−∞0​F(x)dx(1) 证明&#xff1a; E [ X ] ∫ − ∞ ∞ x p ( x ) d x E[X] …

达梦数据库小技巧

达梦数据库小技巧 一&#xff1a; 时间类型TIMESTAMP使用1.1 建表1.2 插入1.3按时间戳查询&#xff0c;返回某一列不重复的值 二&#xff1a;存储过程创建和调用2.1建表2.2 创建存储过程&#xff0c;循环100插入拼接字符串2.3调用存储过程 一&#xff1a; 时间类型TIMESTAMP使用…