سؤال

لديّ تطبيق Windows C ++ يقوم بإنشاء ملف معين للذاكرة للحصول على صورة نقطية يتم تحديثها بشكل متكرر. أود الوصول إلى هذا الملف المعين للذاكرة لعرض الصورة المباشرة في تطبيق Java. كيف أقوم بذلك؟

أعلم أنه يمكن تعيين FileChannel إلى الذاكرة ، لكن لا يمكنني رؤية كيفية الوصول إلى ملف تم تعيين الذاكرة الذي تم إنشاؤه بواسطة عملية أخرى.

أنا بالفعل أستخدم JNA في تطبيق Java الخاص بي ، هل يجب أن أستخدمه للوصول إلى وظيفة ملفات Windows المعينة من Windows؟

أو هل لديك أي حل آخر غير الملف المعين للذاكرة لعرض دفق صورة مباشر في Java من صورة تم إنشاؤها بواسطة برنامج منفصل؟

هل كانت مفيدة؟

المحلول 2

لقد استخدمت النهائي JNA و ال برنامج المكتبة التي يقدمونها. ال kernel32 توفر الحزمة إمكانية الوصول إلى CreateFileMapping و MapViewoffile المهام.

نصائح أخرى

هناك عينة رمز هنا هذا يفعل ما تريد استخدام JNI لسد من C ++ (ملفات الذاكرة Win32) إلى Java. قد تعمل كما هي ، على الرغم من أن هناك حاجة إلى بعض التنظيف للأمان والخيوط اعتمادًا على السيناريو الخاص بك.

لا يزال الملف المعين للذاكرة ملفًا. يمكنك قراءتها مع java.io ، أو يمكنك استخدام mappedbytebuffer من java.nio إذا كنت تريد أن يتم تصنيفها في Java أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top