我有一个Windows c ++应用程序,可以为经常更新的位图创建一个内存映射文件。我想访问此内存映射文件以在Java应用程序中显示实时图像。我该怎么办?

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

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

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

有帮助吗?

解决方案 2

我最终使用了它们提供的 jna platform 库。 Kernel32 包提供访问权限到 CreateFileMapping MapViewOfFile 函数。

其他提示

此处中有一个代码示例,该示例可以使用JNI完成从C ++(Win32内存映射文件)到Java的桥梁。可能照常工作,尽管根据您的情况可能需要对安全性和线程进行一些清理。

内存映射文件仍然是文件。您可以使用java.io读取它,也可以使用java.nio中的MappedByteBuffer来存储Java中的内存映射。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top