Air*_*o2L 7 c c++ shared-memory interprocess
这是我第一次在这里发帖提问,我通常会在档案中找到答案,但这次我很难过.
我使用来自使用Windows Driver Kit的供应商的一些代码从操纵杆中获取数据.数据采用具有6个元素的数组形式(它是6个自由度的鼠标).
我已经编写了需要抓取数据的代码,而且它是用C++编写的......它使用标准库很多用向量而不是.似乎使用WDK的标准库是一个很大的痛苦,我花了几天试图上班但失败了.我的下一个想法是使用boost :: interprocess,但由于同样的原因,这很难与WDK一起使用.
我想知道是否有办法在C进程和C++进程之间共享内存.我想使用C程序将数组写入内存并从C++程序中读取.它需要发生得非常快,应该有一种方法可以确保我不会在写入(mutex?)中读取它.
欢迎任何想法或建议.
编辑 我做了一个DLL,现在我只有一个DLL,它有一个getValues()函数,我可以从我的C++项目调用.我不得不使用pimpl成语来隐藏c的东西.谢谢你的帮助!
也许我错过了一些东西,但看起来您创建了一个进程来检索操纵杆数据。为了省去一些麻烦,请用注释中建议的 C DLL 替换该进程。然后,您的主 C++ 应用程序可以简单地调用该 DLL 中的函数来检索操纵杆数据,甚至无需担心锁或进程间通信。
当然,如果确实需要两个进程,则需要在 DLL 中使用共享内存和进程级锁。需要共享内存,因为 DLL 被单独加载到每个进程的虚拟空间中;没有什么是共享的,因此需要共享内存。