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

Android上的JNI,如何将int从c传递到java,java,android,c,java-native-interface,Java,Android,C,Java Native Interface,我有一个C函数,我只返回一个整数,如下所示: JNIEXPORT jint JNICALL Java_org_project_ScreenPosition(JNIEnv* env, jobject thiz){ int i=1; return i; } public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ menu.setHeaderTitle("TryMen

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

 JNIEXPORT jint JNICALL Java_org_project_ScreenPosition(JNIEnv* env, jobject thiz){
   int i=1;
   return i;
 } 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
 menu.setHeaderTitle("TryMenu");

 int a=ScreenPosition();
 return;
}
我通过Android上的Activity onCreateContextMenu调用此函数,如下所示:

 JNIEXPORT jint JNICALL Java_org_project_ScreenPosition(JNIEnv* env, jobject thiz){
   int i=1;
   return i;
 } 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
 menu.setHeaderTitle("TryMenu");

 int a=ScreenPosition();
 return;
}

但是,如果您将C代码编译到一个名为libmyCode的库中,则所有程序都会崩溃。因此,您需要使用此Java调用将共享库代码显式加载到进程中:

系统加载库(“myCode”)

在调用任何JNI方法之前

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

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


如果它仍然不工作,请共享logcat的输出,包括您将应用程序安装到手机时显示的所有输出,堆栈转储和任何错误或警告消息

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

系统加载库(“myCode”)

在调用任何JNI方法之前

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

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


如果它仍然不工作,请共享logcat的输出,包括您将应用程序安装到手机时显示的所有输出,堆栈转储和任何错误或警告消息

您可以在此处发布声明本机方法的类的代码吗?错误堆栈跟踪也可能有用。您可以在此处发布声明本机方法的类的代码吗?错误堆栈跟踪也可能有用。