我必须使用eclipse中的JNI从我的c程序访问java程序中声明的变量

我必须使用eclipse中的JNI从我的c程序访问java程序中声明的变量,java,c,eclipse,android-ndk,java-native-interface,Java,C,Eclipse,Android Ndk,Java Native Interface,这是我的java代码 包com.example.javacallinc; 导入android.app.Activity; 导入android.widget.TextView; 导入android.os.Bundle; 公共类JNITest扩展活动{ 静止的{ System.loadLibrary JNITest; } 私人int i=42; 公共字符串s=用Java编写; 公共静态双sd=3.14; //受保护的静态字符串ss=JNI-Java; 公共本机字符串修改变量; @重写创建包b上的公共

这是我的java代码

包com.example.javacallinc; 导入android.app.Activity; 导入android.widget.TextView; 导入android.os.Bundle; 公共类JNITest扩展活动{ 静止的{ System.loadLibrary JNITest; } 私人int i=42; 公共字符串s=用Java编写; 公共静态双sd=3.14; //受保护的静态字符串ss=JNI-Java; 公共本机字符串修改变量; @重写创建包b上的公共void{ super.onCreateb; TextView tv=新建TextView此; 字符串s=修改变量; s+=调用C代码后,变量为:\n; s+=i=+Integer.toStringi+\n; s+=s=+s+\n; s+=sd=+sd+\n; //s+=ss=+ss+\n; 电视节目; 设置内容查看电视; } } 这是我的c代码

包括 包括 包括 jstring Java_org_linaro_jnitest_jnitest_modifyVariablesJNIEnv*env,jobject*o{ jclass thisClass=*env->GetObjectClassenv,o; jfieldID id_i=*env->GetFieldIDenv,这个类,i,i; jfieldID id_s=*env->GetFieldIDenv,this类,s,Ljava/lang/String;; jfieldID id_sd=*env->GetStaticFieldIDenv,thisClass,sd,D; jfieldID id_ss=*env->GetStaticFieldIDenv,this类,ss,Ljava/lang/String;; jint c_i=*env->GetIntFieldenv,this类,id_i; jstring c_s=jstring*env->GetObjectFieldenv,thisClass,id_s; jdouble c_sd=*env->GetStaticDoubleFieldenv,thisClass,id_sd; jstring c_ss=jstring*env->GetStaticObjectFieldenv,thisClass,id_ss; char*cs_s=*env->GetStringUTFCharsenv,c_s,NULL; char*cs_sd=*env->GetStringUTFCharsenv,c_sd,NULL; char-buf[512]; snprintfbuf,512,最初由C代码看到的变量:\ni=%u\ns=%s\nsd=%f\nss=%s\n\n,C_i,cs_s,C_sd,cs_ss; *环境->发布StringUTFCharsenv、c_s、c_s; *环境->发布StringUTFCharsenv、c_ss、c_ss; *env->SetIntFieldenv,thisClass,id_i,1701; *env->SetObjectFieldenv,thisClass,id\s, *env->NewStringUTFenv,用C编写; *env->SetStaticDoubleFieldenv,此类,id_sd,3.1415926; *env->SetStaticObjectFieldenv,this类,id_ss,*env->NewStringUTFenv,JNI-C; return*env->NewStringUTFenv,buf; } 当我在eclipse中运行程序时,会出现这样的错误-

java.lang.unstaisfiedlinkerror:native library not included.
我也在Android.mk中包含了这个库。
请帮帮我…

在某种程度上,你是在呼唤一个你忽略它却不存在的库。我不理解所有的代码,但我建议您尝试一下,看看是否导入了代码可能调用的所有库

请发布您的Android.mk文件。还要确保为应用程序中指定的所有平台生成JNITest.so文件。默认情况下,该文件不存在,但您可以创建一个并指定参数,如APP_ABI:=all,这意味着将为每个平台创建一个.so文件。默认情况下,您至少应该看到在jni文件夹中创建的arm文件夹,它应该包含相应的.so文件

格式化代码使其可读将有所帮助