3

我有一个 Windows C++ 应用程序,它为经常更新的位图创建一个内存映射文件。我想访问此内存映射文件以在 java 应用程序中显示实时图像。我怎样才能做到这一点?

我知道 FileChannel 可以映射到内存,但我看不到如何访问由另一个进程创建的内存映射文件。

我已经在我的 java 应用程序中使用了 JNA,我应该使用它来访问标准的 Windows 内存映射文件功能吗?

或者除了内存映射文件之外,您还有其他解决方案可以从单独的程序创建的图像中显示 Java 中的实时图像流吗?

4

3 回答 3

2

这里有一个代码示例,可以使用 JNI 将 C++(Win32 内存映射文件)桥接到 Java。可能会按原样工作,尽管根据您的情况可能需要对安全性和线程进行一些清理。

于 2010-11-01T19:19:36.477 回答
1

我最终使用了jna和他们提供的平台库。Kernel32包提供对CreateFileMappingMapViewOfFile函数的访问。

于 2010-11-09T03:39:52.567 回答
0

内存映射文件仍然是文件。您可以使用 java.io 读取它,或者如果您也希望它在 Java 中进行内存映射,则可以使用 java.nio 中的 MappedByteBuffer。

于 2010-11-01T22:28:08.243 回答