求助jni调用java接口
测试本地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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
虽然不明白为什么 不过可以试下 谢谢
每次调用完JNI函数,都这么搞一下:
代码在android上跑 能用dll么? 而且C代码中必须是主动调用Java接口
回复
android 里面不知道是dll 还是 so 是可以调用的, 现在你是要java 调用 dll 还是c 调用dll?
如果jni 难以转化 可以借助第三方组件
jnative 等待 java调用dll的组件
这是C++写法 转成C和我上面的写法没什么区别吧