今天编程的时候遇到,

java类中的本地函数声明是:

private native static int open_device(String path);

而在生成的头文件中确实这样的:

JNIEXPORT jint JNICALL Java_com_coban_a83tled_A83TLed_open_1device(JNIEnv *, jclass, jstring);明显在方法名中多了一个1;

然后我把函数名声明称这样:

private native static int open(String path);

而生成的头文件中是这样的:

JNIEXPORT jint JNICALL Java_com_coban_a83tled_A83TLed_open (JNIEnv *, jclass, jstring);很明显这样没有1;

然后我把函数名声明称这样:

private native static int open_led_device(String path);

而生成的头文件中是这样的:

JNIEXPORT jint JNICALL Java_com_coban_a83tled_A83TLed_open_1led_1device (JNIEnv *, jclass, jstring);很明显多了俩1

通过这样可以看出来,和函数声明中的下划杠“_”有关。经过查资料,因为jni把C函数名映射成java方法名的时候是com_mypackage_myclass_mymethod();com.mypackage.myclass.mymethod();也就是说jni是依靠下划杠'_'来间隔包、类、方法的,但是如果你的方法名中有'_'字符的话,jni必须能够区分方法名中的'_'字符还是间隔符,所以用加一个1后缀的方式来区分。

所以声明的时候还是要注意点,不过不影响我们使用。

借鉴了:

http://www.01yun.com/other/20160308/658170.html

http://www.myexception.cn/j2se/681720.html

在这里表示感谢。

javah生成的头文件在方法名前加1相关推荐

  1. 解决javah生成c头文件时找不到android类库的问题

    解决javah生成c头文件时找不到android类库的问题 参考文章: (1)解决javah生成c头文件时找不到android类库的问题 (2)https://www.cnblogs.com/liul ...

  2. Javah生成JNI头文件,老忘记,写下来!

    Javah生成JNI头文件,老忘记,写下来! 假设工程目录下有bin文件夹,bin存放编译好的class文件; 在bin目录下, C:/XX/bin/: javah -classpath . -jni ...

  3. Python中的方法名前加下划线

    在Python中,方法名前加下划线通常有以下几种用法和约定: 单个前导下划线(_methodName):这是一种约定,用于指示该方法是类的内部使用方法,应该被视为私有方法.虽然在语法上并没有强制限制, ...

  4. javah生成JNI头文件

    Administrator@ibm /cygdrive/z/workspace/com.example.hellojni.hellojni/src <---- 从此文件夹执行 javah *** ...

  5. android studio生成Jni头文件 java10,java11删除了javah,改用javac直接用源码生成jni头文件。 java8是用javah

    android studio生成Jni头文件 鼠标放本地方法上去,点提示来创建. java10,java11及以上   生成jni头文件 java10,java11删除了javah.改用javac直接 ...

  6. gsoap 学习 1-由wsdl文件生成h头文件

    开始前先看一下用户向导吧 http://www.cs.fsu.edu/~engelen/soap.html 中左侧点击Documentation 英语水平确实有限,有些内容可能说的不准确,敬请参考向导 ...

  7. AndroidStudio快速生成JNI头文件

    依次打开Settings-->Tools-->External Tools-->点击加号创建一个快速生成jni头文件的工具 Program: javah Parameters: -v ...

  8. linux 目录中的文件和子目录生成jar包文件的方法

    linux 目录中的文件和子目录生成jar包文件的方法 jar cvf spark-libs.jar -C //usr/cwgis/app/spark/jars/ .//注意:.点前面有一个空格 [r ...

  9. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  10. python处理文本文件实现生成指定格式文件的方法

    python处理文本文件实现生成指定格式文件的方法 关于python处理文本文件实现生成指定格式文件,很多朋友都不知道该怎么弄. 下面是具体代码,希望对大家有帮助 可以在下面复制: import os ...

最新文章

  1. R语言abline函数为图像添加竖线、横线、斜线、回归线实战
  2. 基于Log4net插件
  3. [源码]python Scapy Ftp密码嗅探
  4. [LeetCode]题解(python):011-Container With Most Water
  5. Day24-Ajax文件上传
  6. 05 - @property 后面所加的关键词
  7. iOS 5.0.1完美越狱教程
  8. 实现Servlet虚拟路径的映射
  9. linux服务器上svn的log_SVN如何查看修改的文件记录
  10. w10 Sentinel的下载和安装
  11. java多表查询实体类_自己设计一个JAVA+MyBatis解析实体类多表通用查询
  12. bp神经网络数据预测实例,bp网络神经预测模型
  13. Java中jdk安装与环境变量配置
  14. C语言程序设计实验报告——实验三
  15. 公司邮箱地址格式是什么?邮箱地址怎么写?邮箱地址大全
  16. linux系统下解压缩
  17. Mybatis和MybatisPlus3.4的使用
  18. 宏碁星锐4750的安装驱动步骤
  19. 用Java编写的双色球摇奖系统
  20. IDEA安装、配置及卸载

热门文章

  1. Android前景与未来趋势
  2. 三星 android recovery,三星所有机型如何进入recovery模式的方法
  3. php cms系统 知乎,php cms 知乎
  4. MATLAB图片处理(上)
  5. wps使用endnote报告参数错误
  6. mysql中一些字节如何计算_在MySQL中将字节值计算为兆字节(MB)?
  7. 服务器怎么设置自动拨号,打造全自动的拨号上网服务器
  8. idea的工具栏显示
  9. windows7内存诊断工具有用吗_用Windows内存诊断工具检查内存可靠性
  10. PADS Logic原理图设计