c++ - 将数据从 C 进程传递到 C++ 进程

标签 c++ c shared-memory interprocess

这是我第一次在这里发布问题,我通常会在存档中找到答案,但这次我被难住了。

我正在使用来自使用 Windows Driver Kit 的供应商的一些代码从操纵杆上获取数据。数据采用具有 6 个元素的数组形式(这是一个 6 自由度的鼠标)。

我已经编写了需要获取数据的代码,它是用 C++ 编写的……它大量使用标准库,包括 vector 等等。似乎将标准库与 WDK 一起使用是一个很头疼的问题,我花了几天时间试图开始工作但失败了。我的下一个想法是使用 boost::interprocess,但出于同样的原因,这很难与 WDK 一起使用。

我想知道是否有一种方法可以在 C 进程和 C++ 进程之间共享内存。我想使用 C 程序将数组写入内存,然后从 C++ 程序中读取它。它需要非常快地发生,并且应该有一种方法来确保我不会在写入过程中读取它(互斥锁?)。

欢迎任何想法或建议。

编辑 我创建了一个 DLL,现在我只有一个 DLL,它有一个 getValues() 函数,我可以从我的 C++ 项目中调用它。不过,我不得不使用 pimpl 习惯用法来隐藏 c 的东西。谢谢大家的帮助!!

最佳答案

也许我错过了什么,但看起来您创建了一个进程来检索操纵杆数据。为了省去一些麻烦,请用评论中建议的 C DLL 替换该过程。然后,您的主 C++ 应用程序可以简单地调用该 DLL 中的一个函数来检索操纵杆数据,甚至不用担心锁或进程间通信。

当然,如果您确实需要两个进程,则需要在 DLL 和进程级锁中使用共享内存。共享内存是必需的,因为 DLL 被单独加载到每个进程的虚拟空间中;没有任何内容是共享的,因此需要共享内存。

关于c++ - 将数据从 C 进程传递到 C++ 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237050/

相关文章:

c - 使用 memcpy 时出现段错误

python - 使我的 NumPy 数组跨进程共享

c - 在 Mac 进入休眠状态之前执行命令

C++ 指针返回 NULL

c++ - 子线程退出时如何通知父线程

c++ - 试图操纵影响数组 C++ 的 isspace 函数

c - C 中的欺骗程序

从消息队列接收后无法使用shm_open

c - C 中的命名共享内存问题

c++ - 如何将类名的一部分定义为宏?