求助jni调用java接口

发布于 2021-11-26 03:03:44 字数 691 浏览 864 评论 6

测试本地C代码通过jni调用C总失败,请大牛们指点:

Java代码中定义:

public int jnitest1(String a){
 return 1;
  }


C代码中定义:

jint Java_com_example_elmTest(JNIEnv* env, jobject obj){

jclass cls = (*env)->GetObjectClass(env,obj);
if(cls == NULL){
     return 1;
}
jmethodID test1 = (*env)->GetMethodID(env, cls, "jnitest1","(Ljava/lang/String;)I");//执行到这里程序崩溃,后面代码还未得到测试
if(test1 == NULL){
return 2;
}
jint intresult = (*env)->CallIntMethod(env,obj, test1,"test ...");
if(test2 == NULL){
     return 3;
}

return 0;

}


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

2021-11-29 02:11:53

虽然不明白为什么 不过可以试下 谢谢

悲喜皆因你 2021-11-29 02:07:53

每次调用完JNI函数,都这么搞一下:

if( ( (*env)->ExceptionCheck() == JNI_TRUE ) || ( test1 == NULL ) ){
	(*env)->ExceptionDescribe();
	(*env)->ExceptionClear();
	return 2;
}

终遇你 2021-11-29 00:24:42

代码在android上跑 能用dll么? 而且C代码中必须是主动调用Java接口

背叛残局 2021-11-28 19:05:04

回复
android 里面不知道是dll 还是 so 是可以调用的, 现在你是要java 调用 dll 还是c 调用dll?

水水月牙 2021-11-27 18:52:26

如果jni 难以转化 可以借助第三方组件

jnative 等待 java调用dll的组件

命硬 2021-11-27 01:13:33

这是C++写法 转成C和我上面的写法没什么区别吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文