我發現這個代碼特定位相當困難的二維String數組(不是其中最重要的,因爲我只有一個星期前開始使用C玩)。創建,填充並返回從本機代碼(JNI/NDK)
我一直試圖很難找到正確的語法正確地創建在C的java字符串數組(即,的jstring對象的數組,即其表示的jstring對象的陣列的對象)。我一直在使用以下資源,並從中構建了編譯代碼。我不確定之後發生的錯誤是由於語法錯誤還是由於完全不同的原因。由於代碼大多是孤立的,我假設語法不正確。
(Suns Native Programming Documentation & Suns JNI documentation)
代碼編譯但傳送的代碼SIGSEGV信號被髮送了「findClass的」線,其殺死C工藝之後:
jint size = 5;
jclass StringObject = (*env)->FindClass(env, "java/lang/String");
jobjectArray sampleMessage = (*env)->NewObjectArray(env, size, StringObject, NULL);
jobjectArray returnArray = (jobjectArray) (*env)->NewObjectArray(env, messageCount, &sampleMessage, 0);
誰能指點一個有用的資源呢?或者確認語法正確。
編輯
我我的問題很大一部分是調試這個代碼導致的問題。我沒有時間來縮小複製因子,但通過eclipse跨越gdb-client中的JNI代碼無效。
很好的答案。非常感謝你! – Graeme 2011-05-23 10:25:05
這段代碼的一個變體在我的測試工具中很好用。然而,當插入到我的應用程序中時,'jclass stringClass =(* env) - > FindClass(env,「java/lang/String」);'會拋出一個'SIGSEGV'。從我所有的檢查都框架和應用程序設置相同。不僅如此,我甚至已經使c文件具有足夠的通用性,可以在線束和代碼之間進行復制,並且仍然會中斷。 有誰知道什麼'JCLASS stringClass =(* ENV) - > FindClass後面(ENV, 「爪哇/郎/字符串」);'是依賴? – Graeme 2011-05-23 14:56:30
大概http://stackoverflow.com/questions/5991615/unable-to-get-jnienv-value-in-arbitrary-context – fizzer 2011-05-23 16:47:03