如何在Java中访问C++内存映射文件

3
我有一个Windows C++应用程序,它创建了一个内存映射文件用于频繁更新的位图。我想访问这个内存映射文件以在Java应用程序中显示实时图像。我该怎么做?
我知道FileChannel可以映射到内存,但我不知道如何访问另一个进程创建的内存映射文件。
我已经在我的Java应用程序中使用了JNA,我应该使用它来访问标准的Windows内存映射文件功能吗?
或者,除了内存映射文件之外,您是否有其他解决方案可以从由单独程序创建的图像中在Java中显示实时图像流?
3个回答

2

这里有一个代码示例(链接),使用JNI从C++(Win32内存映射文件)到Java进行桥接,可以满足您的需求。可能只需要按原样使用,但根据您的情况,可能需要进行安全性和线程清理。


1

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


JNA的提供链接已经失效。 - Chief A

0
一个内存映射文件仍然是一个文件。你可以使用java.io读取它,或者如果你想在Java中将其映射到内存中,也可以使用java.nio的MappedByteBuffer。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接