Android上的JNI,如何将int从c传递到java
我有一个C函数,我只返回一个整数,如下所示: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
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的输出,包括您将应用程序安装到手机时显示的所有输出,堆栈转储和任何错误或警告消息您可以在此处发布声明本机方法的类的代码吗?错误堆栈跟踪也可能有用。您可以在此处发布声明本机方法的类的代码吗?错误堆栈跟踪也可能有用。