我正在尝试使用QSharedMemory。它在Windows下运行得很好,而在Android系统中则不然。第一个create调用失败。它没有链接到键,因为我使用了不同的值。
我的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上,我得到:
尺寸"4096“
在Android上:
main.cpp:17 (int (int,char**)):失败的"QSharedMemory::create: unable“
这是与一个进程,只是试图创建共享内存块。
这看起来真的是个基本问题..。我需要特定的Android许可吗?这个在Android中有售吗?
我使用Qt 4.6.2,目标是gcc 4.9,Qt5.9.6用于Android armv7。我试过在Android设备上运行6.0和8.0。
编辑
用QT5.11.1尝试过,问题仍然是一样的。
此外,在运行此命令时,我在应用程序输出控制台上得到一系列警告:
W libsharedExample.so:(null):0 ((null)):未实现的代码。
注释掉create调用将删除6个这样的警告。如何确定在给定的Qt发行版中实现了哪些特性?如果这不是为Android实现的,那么应用程序应该如何与其服务进行通信(这是一个不同的过程)?
发布于 2018-07-25 16:59:07
所以这个类不是在Android上实现的。unimplemented code的警告是真实的。
在Android上移动数据的一种可靠方法似乎是使用QtRemoteObject。
https://stackoverflow.com/questions/51270061
复制相似问题