我有一个 Windows C++ 应用程序,它为经常更新的位图创建一个内存映射文件。我想访问此内存映射文件以在 java 应用程序中显示实时图像。我怎样才能做到这一点?
我知道 FileChannel 可以映射到内存,但我看不到如何访问由另一个进程创建的内存映射文件。
我已经在我的 java 应用程序中使用了 JNA,我应该使用它来访问标准的 Windows 内存映射文件功能吗?
或者除了内存映射文件之外,您还有其他解决方案可以从单独的程序创建的图像中显示 Java 中的实时图像流吗?
我有一个 Windows C++ 应用程序,它为经常更新的位图创建一个内存映射文件。我想访问此内存映射文件以在 java 应用程序中显示实时图像。我怎样才能做到这一点?
我知道 FileChannel 可以映射到内存,但我看不到如何访问由另一个进程创建的内存映射文件。
我已经在我的 java 应用程序中使用了 JNA,我应该使用它来访问标准的 Windows 内存映射文件功能吗?
或者除了内存映射文件之外,您还有其他解决方案可以从单独的程序创建的图像中显示 Java 中的实时图像流吗?
这里有一个代码示例,可以使用 JNI 将 C++(Win32 内存映射文件)桥接到 Java。可能会按原样工作,尽管根据您的情况可能需要对安全性和线程进行一些清理。
内存映射文件仍然是文件。您可以使用 java.io 读取它,或者如果您也希望它在 Java 中进行内存映射,则可以使用 java.nio 中的 MappedByteBuffer。