从java中访问全局C变量

问题描述:

我正在调用驻留在Java线程的dll中的C函数。此C函数无限期地运行并实时处理视频帧,并为每个帧输出结果。从java中访问全局C变量

我想生成另一个Java线程来读取处理函数的结果而不中断函数。我还需要实现某种线程控制以防止读取损坏的数据。

任何想法?

+0

你目前如何调用C函数? –

+0

以及我还没有实现它,我已经准备好了C函数并打算使用JNI来调用它 – kidhuvig

+0

你在windows上吗?因为从DLL的角度来看“全局”变量实际上很少是全局的。有时它们对每个人都是全球性的,但通常它们仅限于每个进程甚至每个线程。 –

您可以将C函数嵌入到将由您的java线程启动的可执行文件中。 C函数可以将结果发布到管道中或通过套接字将它们发送到您的java线程。这使您可以灵活地在一台机器上运行C函数,在另一台机器上运行Java线程。

全局由您的C环境控制。

我怀疑你应该这样做:

  1. 创建返回全局变量的值的函数,并使用JNI从Java调用它。
  2. 实现你的同步的东西C.
+0

是的,这是解决方案,谢谢。 – kidhuvig