Android上的JNI,如何将int从c传递给java

时间:2010-12-27 21:48:51

标签: java android c java-native-interface

我有一个C函数,我只返回一个整数,如下所示:

 JNIEXPORT jint JNICALL Java_org_project_ScreenPosition(JNIEnv* env, jobject thiz){
   int i=1;
   return i;
 } 

我以Activity onCreateContextMenu Android的方式调用此函数,如下所示:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
 menu.setHeaderTitle("TryMenu");

 int a=ScreenPosition();
 return;
}

但所有崩溃

1 个答案:

答案 0 :(得分:1)

假设您已将C代码编译到名为libmyCode.so的库中,则需要使用此Java调用将共享库代码显式加载到进程中:

的System.loadLibrary( “mycode的”);

在调用任何JNI方法之前。

如果您更改了API(使用“native”关键字的Java中的方法声明),则绝对需要再次运行javah实用程序。

如果您使用Eclipse,那么在运行javah和ndk-build之后,最好通过按F5刷新Eclipse的文件系统视图。然后,Eclipse将检测新构建的库代码。

如果仍然无法正常工作,请分享logcat的输出,包括从安装应用程序到手机时出现的所有输出,堆栈转储以及任何错误或警告消息