JNI调用java的接口
来源:互联网 发布:点阵取模软件 编辑:程序博客网 时间:2024/05/18 10:10
第一次用JNI的代码去调用java接口 ,自己犯的错误 :1,参数的问题 long 应该是J 而不是L 如果是(long ,string ,sting)返回值为int,"(JLjava/lang/String;Ljava/lang/String;)I" J后面不要加;网上看的的时候很多都是L 这次就被这个给坑了。2,jni调用java的方法的前面生成对象里面不要有methodID ,在生成jobj时候就会调用方法。这样方法就会被调用两次。3,jni 的char* - JString 最好还是用NewStringUTF ,网上那个很多转帖那个函数在最后将jobject 强制转换为jstring时会造成java 程序崩溃。
1,java代码
class ScanRecord{
private String nValue = "";public int setValue(long i ,String value,String value2){
System.out.print("start2");
nValue = value;
nValue = value2;
if(value2.length() > value.length()){
return 10;
} else {
return 20;
}
}
2,JNI代码
JNIEXPORT jboolean JNICALL Java_hansense_capture_JNICapture_capture
(JNIEnv *env, jobject obj, jobject vec)
{
jclass cls = env->FindClass("hansense/capture/JNICapture$ScanRecord");
if(cls == 0)
{
printf("cls == 0 \n");
return false;
}
jmethodID jmid_setValue = env->GetMethodID(cls,"setValue","(JLjava/lang/String;Ljava/lang/String;)I");
if(jmid_setValue == 0 ){
printf("jmid_setValue is 0 \n");
} else{
if(jmid_setValue == NULL){
printf("jmid_setValue is NULL \n");
} else{
printf("11111111111 \n");
}
}
jstring str = env->NewStringUTF("asdasdasd");
jstring str2= env->NewStringUTF("aaa");
jlong i =10;
env->CallIntMethod(vec,jmid_setValue,i,str,str2) ;
return true;
}
一个简单的测试用的例子,下载地方http://download.csdn.net/detail/lwei3600103/5854701
- JNI调用java的接口
- JNI调用java接口函数
- Java调用本地接口(JNI) (一)
- Java调用本地接口(JNI) (二)
- JNI之------C调用java接口
- Java调用本地接口jni与C通信----------------JNI
- JNI 调用C++代码 并在C++代码中调用Java传递进来的接口
- ICTCLAS的JNI调用接口说明
- Android中Java的本地接口调用(JNI:Java native interface)
- Java 对jni的调用
- Java调用c++动态链接库用的 JNI转换接口
- Java 中通过jni接口调用native code
- 如何让Java和C++接口互相调用:JNI使用指南
- 如何让Java和C++接口互相调用:JNI使用指南
- JNI 接口 简介 与 示例 java 调用 c++
- JNI: JAVA通过JNI调用另一个JAVA类的方法
- java中非常有用的接口jni
- Java -- JNI提供的操作接口
- 不是很明白这段,怎么样入栈出栈的
- Linq比较重要的操作符
- OpenCV播放视频 加上滚动条
- java创建线程的第二种方式:实现Runnable接口
- OSWorkFlow深入浅出(6)---Step2详解
- JNI调用java的接口
- hdu1215七夕节
- 【转载】嵌入式开发入门指导
- 多校联赛第四场
- 非常完美的大数据可视化js库-----Echart
- Ural 1037. Memory Management
- 黑马程序员--飞行棋(二)
- CSS样式问题集中贴
- 链表之单链表