पर कॉल करते समय जेएनआई दुर्घटनाग्रस्त हो जाता है मैं एंड्रॉइड एप्लिकेशन में मूल सी कोड से जावा विधि को कॉल करने का प्रयास कर रहा हूं। यह जेएनआई के उपयोग के साथ काफी सरल लगता है, लेकिन अंत में विधि को कॉल करते समय मेरा कोड हमेशा दुर्घटनाग्रस्त हो जाता है। मूल निवासी सी कोड::कॉलवॉइड मोड
JNIEXPORT void JNICALL
Java_com_path_to_my_package_renderStuff(JNIEnv* env, jobject jobj){
//...
jclass clazz = env->FindClass("com/path/to/the/class");
jmethodID showCar = env->GetMethodID(clazz,"showCar","()V");
env->CallVoidMethod(jobj,showCar); //If I comment this out, it won't crash
//...
}
जावा कोड: यहाँ मेरी कोड है
public void showCar(){
doSomething()
}
DoSomething() भी पूरा नहीं हुआ है, मैं एक ब्रेकपाइंट वहाँ है, जो मारा जा कभी नहीं होगा सेट कर सकते हैं। और जैसा ऊपर बताया गया है, जैसे ही मैं CallVoidMethod कॉल पर टिप्पणी करता हूं, यह क्रैश नहीं होगा लेकिन स्पष्ट रूप से शोकार() को कॉल नहीं करेगा। कोई संकेत?
क्या आपने यह सुनिश्चित किया है कि 'FindClass' और' GetMethodID' वास्तव में गैर-नल परिणाम लौट रहे हैं? –
हां, हमने दोनों परिणामों की जांच की है, लेकिन इसमें बाइनरी डेटा या कुछ ऐसा लगता है। यह निश्चित रूप से शून्य नहीं है, हालांकि।दुर्भाग्यवश, एंड्रॉइड एनडीके और जीडीबी के साथ मूल कोड डीबग करना काफी कठिन साबित हुआ, क्योंकि हम सी डीबगर को काम करने के लिए बिल्कुल नहीं मिल सकते हैं। – Lennart