Gumawa ng isang klase sa C + + at Gamitin ang klase na Sa Ibang C ++ Class Aling naglalaman ng mga pamamaraan ng JNI sa ndk android

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

Sa Android, nahaharap ako sa mga isyu sa pagkonekta sa dalawang klase ng cpp sa katutubong Android. Sinubukan ko ang isang klase na nagtatrabaho ito nang maayos.

ngunit kapag ako ay gumawa ng isa pang file at ngayon ay nakaharap sa isang isyu sa pag-uugnay nito sa kasalukuyang cpp file.

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) 

Error: hindi natukoy na reference sa `ClassNativeHandler :: getType (_JNIEnv *, _jobject *) '

sa line na ito bumalik classNativeHandler.getType (env, konteksto);

Kaya hindi ako makakapagtayo ng .so file. Paki-gabay mo ako

1 Comments
Joe C 07/27/2017
Ano ang kinalaman sa tanong na ito sa Java?

1 Answers


taskinoor 07/27/2017.

Hindi mo pa pinagsama ang native-handler.cpp . Kailangan mong tukuyin ito sa LOCAL_SRC_FILES upang ma-compile ito ng NDK.

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

3 comments
Amjad Khan 07/27/2017
Ngayon ay maaari kong ipunin ang file, Ngunit makakuha ng error sa pagpapatakbo ng application tulad ng {JNI DETECTED ERROR IN APPLICATION: paggamit ng tinanggal na lokal na sanggunian 0x7f5bc55a3d}
taskinoor 07/27/2017
Sa loob ng ClassNativeHandler::getType iyong tinukoy na lokal na jstring jstringObject epektibong pagsosombra sa pandaigdigang jstringObject na maaaring magdulot ng di-wastong lokal na error ng sanggunian.
Amjad Khan 07/27/2017
Ito ay hindi naka-imbak sa memorya kapag tumuturo muli sa lokasyon sa pagkuha ng null kaya pagkuha ng error sa ClassNativeHandler::getType Aling ay gumagamit ng variable ng jstring jstringObject

Related questions

Hot questions

Language

Popular Tags