0
点赞
收藏
分享

微信扫一扫

Tensorflow Lite移动平台编译

Greatiga 2024-07-24 阅读 29

目的

最近工作遇上了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"
举报

相关推荐

0 条评论