7

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

我正在使用来自使用 Windows 驱动程序工具包的供应商的一些代码从操纵杆上获取数据。数据是一个有 6 个元素的数组形式(它是一个 6 自由度的鼠标)。

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

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

欢迎任何想法或建议。

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

4

1 回答 1

1

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

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

于 2013-01-09T16:45:37.047 回答