Buat kelas C ++ dan Gunakan kelas itu Di Kelas C ++ Lainnya Yang berisi metode JNI di ndk android

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

Di Android, saya menghadapi masalah dalam menghubungkan dua kelas cpp di Android asli. Saya telah diuji dengan kelas tunggal itu bekerja dengan baik.

tetapi ketika saya telah membuat file lain dan sekarang menghadapi masalah dalam menghubungkannya dengan file cpp saat ini.

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) 

Kesalahan: referensi tidak terdefinisi ke `ClassNativeHandler :: getType (_JNIEnv *, _jobject *) '

pada baris ini kembali classNativeHandler.getType (env, context);

Jadi saya tidak bisa membuat file .so. mohon bimbingannya

1 Comments
Joe C 07/27/2017
Apa hubungannya pertanyaan ini dengan Java?

1 Answers


taskinoor 07/27/2017.

Anda belum native-handler.cpp compile native-handler.cpp . Anda perlu menentukannya di LOCAL_SRC_FILES sehingga NDK mengkompilasinya.

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

3 comments
Amjad Khan 07/27/2017
Sekarang saya dapat mengkompilasi file, tetapi mendapatkan kesalahan saat menjalankan aplikasi seperti {JNI DETECTED ERROR IN APPLICATION: penggunaan referensi lokal yang dihapus 0x7f5bc55a3d}
taskinoor 07/27/2017
Di dalam ClassNativeHandler::getType Anda telah menentukan jstring jstringObject lokal secara efektif membayangi jstringObject global yang mungkin menyebabkan kesalahan referensi lokal yang tidak valid.
Amjad Khan 07/27/2017
Ini tidak disimpan dalam memori ketika menunjuk lagi ke lokasi mendapatkan nol sehingga mendapatkan error pada ClassNativeHandler::getType Yang menggunakan variabel jstring jstringObject

Related questions

Hot questions

Language

Popular Tags