
应该是没有问题的,jni是支持重载方法的,他是把重载方法转换成C语言的两个不同方法,方法名是不一样的。我怀疑你的问题是由于dll没有用最新的。你可以把sayhello方法名修改成display,然后重新走一遍jni的 *** 作过程,看看是什么效果。
下面是这个问题和你是一样的
Androidmk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := static_add
LOCAL_SRC_FILES := libstatic_adda
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := share_add
LOCAL_SRC_FILES := hello-jnic
LOCAL_STATIC_LIBRARIES := static_add
LOCAL_C_INCLUDES := $(LOCAL_PATH)/jni/app/src/main/jni
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
LOCAL_STATIC_LIBRARIES := static_add
这一行换成:
LOCAL_LDLIBS += -lstatic_add
或者
LOCAL_LDFLAGS += $(LOCAL_PATH)/libstatic_adda(可以任意指定路径)
jclass GpsInfoClass = env->FindClass("com/parser/GPSINFO");
jfieldID ID_bValid = env->GetFieldID(GpsInfoClass,"bValid","I");
jfieldID ID_bSpeed = env->GetFieldID(GpsInfoClass,"bSpeed","I");
env->SetIntField(_obj,ID_bValid,(jint)infobValid);
env->SetIntField(_obj,ID_bSpeed,(jint)infobSpeed);
return _obj;
以上就可以了。但是不知道你的BYTE是自定义的什么类型,如果是char之类的,就另外想办法转换成jint。其中 _obj 变量是public native GPSINFO getGpsInfo();这个本地方法在C代码中的参数:JNIEXPORT jobject JNICALL Java_com_parser_GPSINFO_ getGpsInfo(JNIEnv env, jobject _obj)
以上就是关于JNI 调用GetMethodID 获得System.out.println()方法的jmethodid时出错的问题。全部的内容,包括:JNI 调用GetMethodID 获得System.out.println()方法的jmethodid时出错的问题。、如何在android studio中用JNI调用静态库、我现在在做Android,用到了JNI,写了一个C程序,返回的是个结构体,在Android如何获取C程序返回的结构体呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)