javah在eclipse中设置参数:location(javah.exe的位置)working dir(${project_loc}/src)

-classpath .;./classes -d ${project_loc}\jni -jni ${java_type_name}

回调的java代码

public class HelloWorld {
static {
System.loadLibrary("jnidemo");
} public void myCallbackFunc(String nMsg) {
Log.v("EagleTag", "back message:" + nMsg);
} private void throwException() throws NullPointerException {
throw new NullPointerException("Null pointer");
} public native String DisplayHello(String inputStr);
}

C代码

jstring JNICALL Java_com_example_jnidemo_HelloWorld_DisplayHello(JNIEnv *env,
jobject obj, jstring what) {
const jbyte *l_what;
char *result; l_what = (*env)->GetStringUTFChars(env, what, NULL);
if (l_what == NULL) {
return NULL; /* OutOfMemoryError already thrown */
} result = malloc(strlen(l_what) + );
if (result == NULL) {
return NULL;
}
sprintf(result, "中文reiver %s", l_what); //回调
char tChar[];
gJniClass = ;
gJinMethod = ; gJniClass = (*env)->GetObjectClass(env, obj);
if (gJniClass == || gJniClass == NULL)
return (*env)->NewStringUTF(env, "-1"); gJinMethod = (*env)->GetMethodID(env, gJniClass, "myCallbackFunc",
"(Ljava/lang/String;)V");
if (gJinMethod == || gJinMethod == NULL)
return (*env)->NewStringUTF(env, "-2"); strcpy(tChar, result);
(*env)->CallVoidMethod(env, obj, gJinMethod,
(*env)->NewStringUTF(env, tChar)); return (*env)->NewStringUTF(env, result);
}

JNI 回调小记的更多相关文章

  1. JNI通过线程c回调java层的函数

    1.参看博客:http://www.jianshu.com/p/e576c7e1c403 Android JNI 篇 - JNI回调的三种方法(精华篇) 2.参看博客: JNI层线程回调Java函数关 ...

  2. NDK(20)JNI的5大性能缺陷及优化技巧

    转自 : http://www.ibm.com/developerworks/cn/java/j-jni/index.html JNI 编程缺陷可以分为两类: 性能:代码能执行所设计的功能,但运行缓慢 ...

  3. NDK(22)JNI编程如何避免常见缺陷

    转自 : http://www.ibm.com/developerworks/cn/java/j-jni/index.html 避免常见缺陷 假设您编写了一些新 JNI 代码,或者继承了别处的某些 J ...

  4. JNI 多线程

    一.概述 JNI编程和Linux上的C/C++编程还是挺相似的,每次java调用JNI中的函数时都会传入有关JVM的一些参数(如JNIEnv,jobject),每次JNI回调java中的方法时都要通过 ...

  5. 谷歌广告Admob在cocos2dx上通过回调实现底部Banner

    首先说明我的开发平台,以免由于平台问题造成不必要的误解: cocos2dx-3.4 ndk-r9d eclipse Admob是谷歌官方广告,已经集成在google_play_service_lib包 ...

  6. 解决JNI native 线程不能正常退出的问题

    本人刚涉足学习C++ 安卓  java,遇到这个棘手的问题,多谢博客园作者lknlfy 看了你的博客解决了这个问题,此文转发, 方便日后学习 以下内容转自lknlfy作者博客  传送门:http:// ...

  7. Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)

    此文章是关于NDK线程的第二篇理论知识笔记.主要有两个点,如下: 1.pthread_create(Too many arguements, expected 1) ?2.线程中如何获取JNIEnv? ...

  8. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  9. Android NDK开发----- JNI多线程

    一.概述 JNI编程和Linux上的C/C++编程还是挺相似的,每次java调用JNI中的函数时都会传入有关JVM的一些参数(如JNIEnv,jobject),每次JNI回调java中的方法时都要通过 ...

随机推荐

  1. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  2. django GET POST

    django需要读取客户端get和post请求的值.读取处理方法和异常记录于此. 参考链接: http://stackoverflow.com/questions/12518517/request-p ...

  3. SpringMVC @ResponseBody的使用

    原文链接:http://www.jianshu.com/p/7097fea8ce3f@ResponseBody用法作用:该注解用于将Controller的方法返回的对象,根据HTTP Request ...

  4. 苹果公司给出的检测 advertisingIdentifier 的方法

    To locate the reference to the advertisingIdentifier selector, please perform these steps to create ...

  5. PHP受保护的类和私有类什么区别

    受保护的继承后可以访问,私有的只能在该类中访问,不会被继承访问class Man{ protected $name='lee';//受保护 private $age=123;//私有 function ...

  6. iPhone批量删除照片/视频最好用的方法

    iPhone批量删除照片/视频最好用的方法 经过大量的搜索和不懈的尝试,今天终于找到了批量删除iPhone照片最好用的方法, 于是决定写一篇博客为更多的果粉们造福! 1. 通过USB将iPhone手机 ...

  7. python get方法

    dics.get(k,d)get相当于一条if...else...语句.如果参数k在字典dics中,字典将返回dics[k];返回参数d.例子 >>> l = {:, :} > ...

  8. java对象占多少内存

    通常来说Hotspot jvm的对内存中的对象由以下几个部分组成 一个对象头,包含了一些整理工作所需信息 原始类型字段,不同类型大小各异(表1) 引用字段,占据4个字节(byte) 填充,在对象的末尾 ...

  9. Android基本控件属性设置

    EditText: EditText去边框:<EditText  android:background="@null"  /> EditText的hint的字体大小的设 ...

  10. MyCat:在.NET Core中使用MyCat

    http://www.cnblogs.com/yuangang/p/5830716.html