Как получить доступ к C ++ памяти сопоставленных файлов в Java - PullRequest
2 голосов
/ 01 ноября 2010

У меня есть приложение для Windows c ++, которое создает файл отображения памяти для растрового изображения, которое часто обновляется.Я хотел бы получить доступ к этому файлу отображения памяти для отображения живого изображения в приложении Java.Как я могу это сделать?

Я знаю, что FileChannel может быть сопоставлен с памятью, но я не вижу, как получить доступ к файлу сопоставленной памяти, созданному другим процессом.

Я уже использую JNA в своем Javaприложение, следует ли использовать его для доступа к стандартной функциональности сопоставленных файлов памяти Windows?

Или у вас есть какое-либо иное решение, кроме файла сопоставления памяти, для отображения потока живого изображения в Java из изображения, созданного отдельной программой?

Ответы [ 3 ]

2 голосов
/ 01 ноября 2010

Вот пример кода здесь , который делает то, что вы хотите, используя JNI для соединения C ++ (файлы отображения памяти Win32) с Java. Может работать как есть, хотя в зависимости от вашего сценария может потребоваться некоторая очистка для обеспечения безопасности и многопоточности.

1 голос
/ 09 ноября 2010

Я окончательно использовал jna и библиотеку platform , которую они предоставляют.Пакет Kernel32 предлагает доступ к функциям CreateFileMapping и MapViewOfFile .

0 голосов
/ 02 ноября 2010

Файл с отображением в памяти по-прежнему является файлом. Вы можете прочитать его с помощью java.io или использовать MappedByteBuffer из java.nio, если вы хотите, чтобы он отображался в памяти также в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...