gpt4 book ai didi

android - Android 是否支持 Qt QSharedMemory?

转载 作者:行者123 更新时间:2023-11-29 23:46:39 27 4
gpt4 key购买 nike

我正在尝试使用 QSharedMemory。它在 Windows 下工作正常,而不是在 Android 中。第一个 create 调用失败。它没有链接到 key ,因为我使用了不同的值。

我的main.cpp如下:

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QSharedMemory>
#include <QDebug>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;

QSharedMemory _sharedMemory("QtMemTest", nullptr);
if (!_sharedMemory.create(sizeof(int), QSharedMemory::ReadWrite))
qDebug() << "Failed " << _sharedMemory.errorString();
else
qDebug() << "Size " << QString::number(_sharedMemory.size());

return app.exec();
}

在 Windows 上,我得到:

Size "4096"

在安卓上:

main.cpp:17 (int main(int, char**)): Failed "QSharedMemory::create: unable to lock"

这是单个进程,只是试图创建共享内存块。

这看起来真的像是一个基本问题……我需要特定的 Android 权限吗?这在 Android 中可用吗?

我正在使用 Qt Creator 4.6.2,目标是 gcc 4.9,Qt 5.9.6 for Android armv7。我已经在运行 6.0 和 8.0 的 Android 设备上进行了尝试。

编辑

用 Qt 5.11.1 试过了,问题还是一样。

此外,在运行此程序时,我在应用程序输出控制台上收到了一系列警告:

W libsharedExample.so: (null):0 ((null)): Unimplemented code.

注释掉 create 调用会删除 6 个此类警告。如何确定在给定的 Qt 版本中实现了哪些功能?如果这不是针对 Android 实现的,应用程序应该如何与其服务通信(这是一个不同的过程)?

最佳答案

所以Android上没有实现这个类。 unimplemented code 警告是真实的。

在 Android 上的进程之间移动数据的可靠方法似乎是使用 QtRemoteObject。

关于android - Android 是否支持 Qt QSharedMemory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270061/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com