gpt4 book ai didi

使用 Boost.Interprocess 的 Android C++ IPC - 它应该工作吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:53 33 4
gpt4 key购买 nike

背景:

我在使用 Boost IPC 访问共享内存的 linux 上有工作的 C++ 代码,我想将它移植到 android。我在此处下载并构建了 Boost-for-Android 项目:https://github.com/MysticTreeGames/Boost-for-Android .

问题:

然而,当我尝试创建一个名为 mutex 的 boost 时:

boost::interprocess::named_mutex named_mtx(boost::interprocess::open_or_create, "my_mutex");

我收到一个异常提示“没有这样的文件或目录”, native 代码为 2。

附加信息:

当我搜索如何在 android 上使用共享内存时,ashmem 和 Binder 似乎是流行的方法,但我在移植的 Boost IPC 代码中根本找不到对它们的引用。

问题:

  1. “没有这样的文件或目录”错误的原因是什么?
  2. 有人可以确认 Boost-for-Android IPC 部分有效吗?

最佳答案

默认情况下,Boost 不会寻找在 Android 上共享数据的公共(public)位置。它不是这样 build 的。为了让它工作修改文件

    /boost/interprocess/detail/os_file_functions.hpp

找到下面一行添加/sdcard

    const char *names[]={ "/sdcard", ......

之后使用库并为您的应用程序提供读/写外部存储权限。

一切顺利。

PD:请小心。我在 Android 中使用 Mutex 和条件变量时遇到问题,因为该进程占用了 100% 的 CPU。

关于使用 Boost.Interprocess 的 Android C++ IPC - 它应该工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20938979/

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