Как получить доступ к файлам с памятью C ++ в Java
-
28-09-2019 - |
Вопрос
У меня есть приложение Windows C ++, которое создает отображаемый файл памяти для растрового изображения, который часто обновляется. Я хотел бы получить доступ к этому отображению памяти файла, чтобы отобразить живое изображение в приложении Java. Как я могу это сделать?
Я знаю, что Filechannel можно сопоставить на память, но я не вижу, как получить доступ к файлу с отображенным памятью, созданным другим процессом.
Я уже использую JNA в моем приложении Java, я должен использовать его для доступа к стандартным функциям файлов с отображенной памятью Windows?
Или у вас есть какое-либо другое решение, чем в файл памяти, отображаемый в прямом эфире потока изображений в Java с изображения, созданного отдельной программой?
Другие советы
Есть образец кода здесь Это делает то, что вы хотите использовать JNI для моста из C ++ (Win32 Maphicated файлы) в Java. Может просто работать как есть, хотя некоторая очистка для безопасности и резьбы может потребоваться в зависимости от вашего сценария.
Файл отображения памяти по-прежнему файл. Вы можете прочитать его с помощью java.io, или вы могли бы использовать mapheapbytebuffer от java.nio, если вы хотите, чтобы он тоже был сопоставлен в Java.