मैं जेएनआई के माध्यम से सी ++ से जावा विधि को कॉल करता हूं। जावा विधि एक enum स्थिति देता है। https://stackoverflow.com/a/17441151/3352197जेएनआई ऑब्जेक्ट संदर्भों की तुलना
jclass clSTATUS = env->FindClass("MyClass$STATUS");
jfieldID fidONE = env->GetStaticFieldID(clSTATUS , "ONE", "LMyClass$STATUS;");
jobject STATUS_ONE = env->GetStaticObjectField(clSTATUS, fidONE);
तो, कॉल
jobject o = env->CallObjectMethod(jTestobject, test);
एक jobject एक enum स्थिति का प्रतिनिधित्व करने, विशेष रूप से एक देता है: मैं पहले से ही jobjects यहाँ की तरह मेरे C++ कोड में enums का प्रतिनिधित्व किया है। तो, मुझे कैसे पता चलेगा कि यह कौन सा enum वापस आ गया है? मैंने इसे STATUS_ONE
से तुलना करने की कोशिश की, लेकिन वे मेल नहीं खाते।
आपने 'STATUS_ONE' के साथ 'o' की तुलना कैसे की? – Samhain
बस == के साथ, लेकिन यह गलत हो सकता है? मैंने दोनों को भी मुद्रित किया, लेकिन उनके पास अलग-अलग पॉइंटर्स हैं (या तो)। – sosnet
'बराबर' विधि का उपयोग करने का प्रयास करें। सुनिश्चित नहीं है कि 'env-> IsSameObject (o, STATUS_ONE) 'कॉल करता है या नहीं – Samhain