एक सी ++ कक्षा बनाएं और उस वर्ग का उपयोग किसी अन्य सी ++ कक्षा में करें जिसमें एनएनडी एंड्रॉइड में जेएनआई विधियां हों

Amjad Khan 07/27/2017. 1 answers, 51 views
android android c++ android-ndk android-ndk native

एंड्रॉइड में, मुझे देशी एंड्रॉइड में दो सीपीपी कक्षा को जोड़ने में समस्याएं आ रही हैं। मैंने एक वर्ग के साथ परीक्षण किया है जो ठीक काम कर रहा है।

लेकिन जब मैंने एक और फाइल बनाई है और अब इसे वर्तमान सीपीपी फ़ाइल से जोड़ने में किसी समस्या का सामना करना पड़ रहा है।

MainClass.cpp

#include #include "native-handler.h"

extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_fragment_SampleFragment_setTitle(JNIEnv *env,jobject instance,jobject context) {

    ClassNativeHandler classNativeHandler;
    return classNativeHandler.getType(env,context);
} 

native-handler.cpp

#include #include "native-handler.h"

jstring jstringObject;

jstring ClassNativeHandler::getType(JNIEnv *env, jobject contextObject) {
    jstring jstringObject = env->NewStringUTF("Hello world");
    return jstringObject;
}

void ClassNativeHandler::setType(jstring string) {
    myType = string;
    jstringObject = string;
} 

native-handler.h

#ifndef SAMPLE_NATIVE_HANDLER_H
#define SAMPLE_NATIVE_HANDLER_H

#include #include class ClassNativeHandler
{
private:
    jstring myType;

public:
    void setType(jstring string);
    jstring getType(JNIEnv *env, jobject contextObject);
    jstring getHeaderName(JNIEnv *env);

};

#endif //SAMPLE_NATIVE_HANDLER_H 

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := Native
LOCAL_SRC_FILES := ../cpp/mainClass.cpp
LOCAL_C_INCLUDES := ../cpp/native-handler.h
LOCAL_LDLIBS := -lz -llog -ljnigraphics
include $(BUILD_SHARED_LIBRARY) 

त्रुटि: 'क्लासनेटिव हैंडलर :: getType (_JNIEnv *, _jobject *)' के लिए अपरिभाषित संदर्भ

इस लाइन पर वापसी क्लासNativeHandler.getType (env, संदर्भ);

इसलिए मैं .so फ़ाइल बनाने में सक्षम नहीं हूं। कृपया मेरा मार्गदर्शन करें

1 Comments
Joe C 07/27/2017
जावा के साथ इस सवाल को क्या करना है?

1 Answers


taskinoor 07/27/2017.

आपने native-handler.cpp संकलित नहीं किया native-handler.cpp । आपको इसे LOCAL_SRC_FILES में निर्दिष्ट करने की आवश्यकता है ताकि LOCAL_SRC_FILES इसे संकलित कर सके।

LOCAL_SRC_FILES := ../cpp/mainClass.cpp ../cpp/native-handler.cpp

3 comments
Amjad Khan 07/27/2017
अब मैं फ़ाइल को संकलित कर सकता हूं, लेकिन एप्लिकेशन को चलाने पर त्रुटि प्राप्त करें जैसे {जेएनआई आवेदन में डिटेक्टेड त्रुटि: हटाए गए स्थानीय संदर्भ 0x7f5bc55a3d} का उपयोग
taskinoor 07/27/2017
ClassNativeHandler::getType अंदर ClassNativeHandler::getType आपने स्थानीय jstring jstringObject प्रभावी रूप से वैश्विक jstringObject को jstringObject जो अमान्य स्थानीय संदर्भ त्रुटि का कारण बन सकता है।
Amjad Khan 07/27/2017
यह स्मृति में संग्रहीत नहीं होता है जब स्थान को शून्य पर फिर से इंगित किया जाता है, इसलिए ClassNativeHandler::getType पर त्रुटि प्राप्त हो रही है ClassNativeHandler::getType जो locai variable jstring jstringObject का उपयोग कर jstring jstringObject

Related questions

Hot questions

Language

Popular Tags