Bir C ++ sınıfı oluşturun ve ndk androidde JNI yöntemleri içeren başka bir C ++ Sınıfında bu sınıfı kullanın

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

Android'de, yerel Android'de iki cpp sınıfını bağlama konusunda sorunlarla karşılaşıyorum. Tek sınıfla test ettim, iyi çalışıyor.

ama başka bir dosya oluşturduğumda ve şimdi geçerli cpp dosyasıyla bağlantı kurmada bir sorunla karşılaştığımda.

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) 

Hata: ClassNativeHandler :: getType (_JNIEnv *, _jobject *) 'ye tanımlanmamış başvuru

bu satırda returnNativeHandler.getType (env, context);

Bu yüzden .so dosyasını oluşturamıyorum. Lütfen bana yol göster

1 Comments
Joe C 07/27/2017
Bu sorunun Java ile ne ilgisi var?

1 Answers


taskinoor 07/27/2017.

native-handler.cpp . Bunu LOCAL_SRC_FILES içinde belirtmeniz gerekir.

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

3 comments
Amjad Khan 07/27/2017
Şimdi dosyayı derleyebilirim, fakat uygulamayı {JNI DETECTED ERROR IN APPLICATION: silinen yerel referansın kullanımı 0x7f5bc55a3d} gibi uygulamayı çalıştırırken hata alıyorum
taskinoor 07/27/2017
ClassNativeHandler::getType jstringObject , geçersiz yerel başvuru hatasına neden olabilecek global jstringObject jstring jstringObject etkin bir şekilde gölgelendirerek jstring jstringObject etkin bir şekilde tanımlandığını tanımladınız.
Amjad Khan 07/27/2017
ClassNativeHandler::getType üzerinde loca değişken jstring jstringObject kullanarak hangi hata alıyorum null alma konumu tekrar işaret ederken bellekte saklanmaz.

Related questions

Hot questions

Language

Popular Tags