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

Passing data from a C process to a C++ process

本文关键字:进程 c++ 数据      更新时间:2023-10-16

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

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

我已经写了需要抓取数据的代码,它是在c++中…它使用了很多标准库来处理向量等等。似乎使用标准库与WDK是一个很大的头痛,我花了几天时间试图去工作,但失败了。我的下一个想法是使用boost::interprocess,但由于同样的原因,这很难与WDK一起使用。

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

欢迎提出任何意见或建议。

编辑我做了一个DLL代替,现在我只有一个DLL,有一个getValues()函数,我可以从我的c++项目调用。我不得不使用"粉刺"这个习语来隐藏c的内容。谢谢你们的帮助!!

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

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