通过JNI从C ++调用JAVA函数,该功能返回字符串

 2023-01-19    357  

问题描述

可能的重复:
如何在C ++应用程序中访问Java方法

假设我有这样的Java类:

通过JNI从C ++调用JAVA函数,该功能返回字符串

class MyClass
{
  String value = "a string value";

  String getValue()
  {
    return value;
  }
}

我已经尝试了几个小时来实现调用Java功能并返回字符串的JNI功能.
有人可以通过摘要向我展示如何使用JNI从C ++调用” GetValue”函数,并获得带有字符串变量值的JString变量.

//C ++

jobject result;

jMethodID method_getValue = m_env->GetMethodID(native_object,"getValue","()Ljava/lang/String;");
result = m_env->CallObjectMethod(native_object, method_getValue);

推荐答案

jMethodID method_getValue = m_env->GetMethodID(native_object,"getValue","()Ljava/lang/String;");

在这里,本机_object应该是myClass的类定义对象(JCLASS)

jmethodID GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);

而到这里:

result = m_env->CallObjectMethod(native_object, method_getValue);

nativetype callmethod(jnienv *env,jobignt obj,
jmethodid methodid,…);

您的callObjectMethod期望将第一个参数从myclass,没有JCLASS中的对象.
http://download.oracle.oracle.com/javase/javase/1.4.2/docs/guide/jni/spec/functions.html

所以这两个电话都错了…

可能是getMethodid …您绝对应该在那里检查null.

欢呼,

以上所述是小编给大家介绍的通过JNI从C ++调用JAVA函数,该功能返回字符串,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25843.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。