我想通過一個NDK的C函數修改的Java SDK聲明全局變量,如訪問Java靜態字段:如何通過NDK
public class NDKTest extends Activity
{
static int myglobal = 0;
static { System.loadLibrary("MyCLib"); }
static public native void incrementmyglobal();
....
和MyCLib:
#include "NDKTest.h"
JNIEXPORT void JNICALL Java_NDKTest_incrementmyglobal
(JNIEnv * env, jobject jObj)
{
/*
this next line is obviously wrong, but illustrates how it would have
been done had it been a purely C program
*/
M.myglobal = M.myglobal + 1;
return;
}
所以我的問題是:
a /違規行的正確語法是什麼?
b/C頭文件應該如何查看?
c/Android.mk文件應該如何查看?
我可以編譯和運行各種'helloworld'NDK示例,但是我找不到任何可以說明如何修改在java中聲明的全局的 。一個超級簡單的例子將不勝感激!
我使用Linux命令行(ant調試)和簡單的文本編輯器(emacs)進行編程。我不使用Eclipse;已經編寫了C多年,並且是Java noob。 目標平臺是Android。 乾杯!
據我記得,Java中的int!= int。對於Android NDK,他們被稱爲'jint'我相信。 – sschrass
對於Android來說這不是一個特別的問題,它更多的是關於JNI的一般情況,偶爾嘗試谷歌的這個東西http://stackoverflow.com/questions/2630529/jni-how-to-access-java-object-integer – axis
,該行: M.myglobal = M.myglobal + 1; 應該已經閱讀: NDKTest.myglobal = NDKTest.myglobal + 1; 沒有找到如何編輯我自己的問題 –