【问题标题】:how to access c++ memory mapped files in java如何在java中访问c ++内存映射文件
【发布时间】:2010-11-01 18:50:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java c++ interop memory-mapped-files


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 提供的 jna 链接已损坏
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-14
        • 1970-01-01
        • 2020-11-09
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多