2011-12-24 14 views
0

我有一个Java函数,它可以接受可变数量的参数,并且在JNI中,我正在接收jobjectArray中的所有参数。但问题是所有可用的字符串类型的参数,但最初你是不同的数据类型。所以在C/C++中将它们转换为原始类型是不可能的。所以,如果我可以调用一些其他的Java方法,这将使这些转换容易me.is有可能从JNI本地代码中调用java方法?我可以从本地代码调用java方法吗?如果是这样的话?

请帮我一把。我从很长一段时间以来一直很受打击。提前致谢。

回答

1

当您使用env-> NewStringUTF(实际参数)回调java方法时,我们可以从本地代码传递String作为参数。

1

下面是一个简洁的例子:http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/method.html

基本上,您需要查找代表要调用的类和方法的本机对象,格式化您的参数,调用相应的JNIEnv-> CallXXX方法并处理结果值。

+0

非常感谢,它正在工作。 – johnkrishna 2011-12-27 04:46:39

+0

我再次遇到了问题是,当我发送像int这样的基本数据类型作为参数到java回调方法它工作正常,但是当我发送字符串作为参数它给致命错误。你帮我。 – johnkrishna 2011-12-28 05:05:52

+0

JNIEXPORT jvoid JNICALL Java_org_bel_MyJMSListenerAction_gsl_1stats_1all_1in_1one (JNIEnv的*的env,jobject OBJ,jobjectArray ARR) { JCLASS CLS = env-> GetObjectClass(OBJ); jmethodID mid = env-> GetMethodID(cls,“callback”,“(Ljava/lang/String;)I”); printf(“IN C native,在调用回调方法之前\ n”); (调用回调方法之后的IN C native,\ n“); //调用callIntMethod(obj,mid,”123“); //这个字符串参数给出问题 int t2 = env-> CallIntMethod printf(“在java回调方法之后打印t2值:%d”,t2); } – johnkrishna 2011-12-28 05:18:23

相关问题