繁体   English   中英

创建一个C ++类并在另一个包含ndk android中的JNI方法的C ++类中使用该类

[英]Create a C++ class and Use that class In Another C++ Class Which contain JNI methods in ndk android

在Android中,在本机Android中连接两个cpp类时遇到问题。 我已经用单班测试了它的正常工作。

但是当我创建另一个文件并且现在将其与当前cpp文件链接时遇到问题。

MainClass.cpp

#include <jni.h>
#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);
}

本机handler.cpp

#include <jni.h>
#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;
}

本机handler.h中

#ifndef SAMPLE_NATIVE_HANDLER_H
#define SAMPLE_NATIVE_HANDLER_H

#include <iostream>
#include <string>

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)

错误:对`ClassNativeHandler :: getType(_JNIEnv *,_jobject *)的未定义引用

在此行上返回classNativeHandler.getType(env,context);

因此,我无法生成.so文件。 请指导我

您尚未编译native-handler.cpp 您需要在LOCAL_SRC_FILES指定它,以便NDK对其进行编译。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM