2011-12-24 15 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

相關問題