2011-06-12 61 views
1

在JNI當我們想從C傳遞一個字符串到Java中,我們用(C++)做到這一點:在一個函數傳遞多個字符串從C到Java(JNI)

return env->NewStringUTF("MY String"); 

由於這是一個return語句,它可以被稱爲一次,即。只有一個字符串可以從C傳遞給Java。

我們想要從C傳遞多個String到Java的函數呢?

例如,考慮在其中一個功能想通過多個字符串的情況:

void num() 
{ 
    for(int i=0;i<10;i++) 
    { 
     pass i from C to java.. 
    } 
} 

我怎麼能做出這種事情?

注意:我知道這可以通過使用字符串數組或者連接i並返回字符串來實現。此外,我知道我是一個整數,並且我知道如何將整數轉換爲C++中的String。

考慮到這是必要的傳遞我作爲循環運行,雖然我(這是通過)。

如果該函數仍然無效,這將是一件好事。

回答

0

這可以通過
a)在for循環中調用java方法(回調函數)(它們實際上是所需數組的設置器)。
b)傳遞jbyte(int)數組作爲參數並將其填充到循環中。 c)你提到的方法 - 包裝返回對象(在字節數組中)並返回它;解壓它在Java方面。

您不感興趣的選項是採用最佳方法和一般方法。
JNI代碼的主要重點是減少Java-C間的調用(反之亦然)。嘗試修改你的選項,如果你正在編寫非平凡的代碼

+0

其實,使用方法b&c Java方面將知道函數的唯一初始(before循環)和final狀態(after循環),它將不知道多少時間循環已經運行。 所以爲了保持java方面更新循環,我們不得不使用方法a。 – d34th4ck3r 2011-06-13 11:03:20

+0

@ richard-head,好吧你想繼續選擇'a'? – Tatvamasi 2011-06-13 12:47:31

+0

@ richard-head請表明該建議是否通過投票/選擇答案來幫助(回答)您的問題。如果沒有,請讓我知道你還在尋找什麼 – Tatvamasi 2011-06-13 21:04:26

相關問題