我有一个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;
}
但所有崩溃
答案 0 :(得分:1)
假设您已将C代码编译到名为libmyCode.so的库中,则需要使用此Java调用将共享库代码显式加载到进程中:
的System.loadLibrary( “mycode的”);
在调用任何JNI方法之前。
如果您更改了API(使用“native”关键字的Java中的方法声明),则绝对需要再次运行javah实用程序。
如果您使用Eclipse,那么在运行javah和ndk-build之后,最好通过按F5刷新Eclipse的文件系统视图。然后,Eclipse将检测新构建的库代码。
如果仍然无法正常工作,请分享logcat的输出,包括从安装应用程序到手机时出现的所有输出,堆栈转储以及任何错误或警告消息