لا يمكن إجراء مكالمة من C ++ إلى Java باستخدام JNI
-
12-12-2019 - |
سؤال
لدي مشروع صغير مع مكتبات Cocos2D-X.أحاول استخدام C ++ لاستدعاء وظيفة Java ولكن أحصل على استثناء إشارة 11 في الخط: giveacodicetagpre.
لكنني لا أعرف لماذا يحدث هذا.
في بلدي java class getsocial.java موجودة هذه الوظيفة: giveacodicetagpre.
هذه الوظيفة قم بتشغيل Navigator لنشر سقسقة.دعا من جافا يعمل بشكل جيد.
في my c ++ interfacejni.h لدي: giveacodicetagpre.
وفي interfacejni.cpp: giveacodicetagpre.
يتم استدعاء هذه الواجهة من جزء من الرمز باستخدام: giveacodicetagpre.
ما يحدث لإرجاع مؤشر فارغا على jvm-> getenv ((void **) & env، jni_version_1_6)؛
المحلول
يبدو أن متغير JVM الخاص بك فارغ أو القمامة.يحتوي إصدار Cocos2D-X الذي استخدمه فئة يسمى JniHelper مع ثابت :: GetJavavm ()؛الطريقة التي قد ترغب في استخدامها. giveacodicetagpre.
أيضا، تذكر "تحديث" مشروع Eclipse الخاص بك في كل مرة تقوم فيها ببناءها مع NDK.ربما تفعل بالفعل، لكن الأمر يستحق التدقيق.