“([Ljava/lang/String;)V” 它是一种对函数返回值和参数的编码。这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。一个数组int[],就需要表示为这样"[I"。如果多个数组double[][][]就需要表示为这样 "[[[D"。也就是说每一个方括号开始,就表示一个数组维数。多个方框后面,就是数组 的类型。
如果以一个L开头的描述符,就是类描述符,它后紧跟着类的字符串,然后分号“;”结束。
比如"Ljava/lang/String;"就是表示类型String;
"[I"就是表示int[];
"[Ljava/lang/Object;"就是表示Object[]。
JNI方法描述符,主要就是在括号里放置参数,在括号后面放置返回类型,如下:
(参数描述符)返回类型
当一个函数不需要返回参数类型时,就使用”V”来表示。
比如"()Ljava/lang/String;"就是表示String f();
"(ILjava/lang/Class;)J"就是表示long f(int i, Class c);
"([B)V"就是表示void String(byte[] bytes);
Java 类型 |
符号 |
Boolean |
Z |
Byte |
B |
Char |
C |
Short |
S |
Int |
I |
Long |
J |
Float |
F |
Double |
D |
Void |
V |
objects对象 |
以"L"开头,以";"结尾,中间是用"/" 隔开的包及类名。比如:Ljava/lang/String;如果是嵌套类,则用$来表示嵌套。例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z" |
另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就可以了,比如:[I 表示 int [];[L/java/lang/objects;表示Objects[],另外。引用类型(除基本类型的数组外)的标示最后都有个";"
例如:
"()V" 就表示void Func();
"(II)V" 表示 void Func(int, int);
"(Ljava/lang/String;Ljava/lang/String;)I".表示 int Func(String,String)
相关推荐
* Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_cn_com_util_Jni_convert_1mp3_1mehtod (JNIEnv *env, jobject jot, jstring _path); #ifdef __cplusplus } #endif #...
JNI开发Java和C/C++互相传递List集合, 可以参考: Java从C/C++获取List集合对象:https://blog.csdn.net/niuba123456/article/details/80994166 Java传递List集合对象到C/C++ ...
//----字符串处理 (java中编码为utf-16,android为utf-8),jni不能直接使用string---- private native String passStringReturnString(String string); //--基本类型--- private native int add(int a, ...
本篇和大家简单地建立一个Java调用C++代码的程序!
方法签名,如果是一个非静态数据类型,就得把整个路径都写上,并且在最前面加上L,例如String类型的写法是: Ljava/lang/String创建对象(如果被
Android应用程序(APK)怎样通过JNI调用Native C/C++实现的共享库。Android系统的Java虚拟机为C和C++实现两套不同的API,本工程分别对其作出示例程序。并编译出libhelloworld.so/libhelloworldcpp.so共享库
通过jni完成java调用c/c++,包含c/c++生成Dll动态库
1、实现一个android工程,在其Android.mk文件中不要定义jni相关的东西,代码中可以尽情的使用 2、使用mmm 命令编译该工程,能够编译成功的。(System.loadLibrary("jni_example");) 3、使用javah 命令编译定义有...
android-aes-jni, 用于 jni& Java的Android AES示例 android-aes-jni git clone https://github.com/panxw/android-aes-jni.git cd android-aes-jni ndk-build
tomcat-native-1.1.34-src.tar.gz tomcat 使用aprtar ... cd tomcat-native-1.1.34-src/jni/native/ ./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/jdk1.7.0_75/ make && make install
基于JNI的G711编解码 支持alaw -> pcm / pcm -> alaw / ulaw ->pcm / pcm -> ulaw / alaw -> ulaw / ulaw -> alaw 目前只支持windows 内含有 可直接使用jar包 、java源码、C/C++源码 纯java编写G711、仅支持alaw与...
本教程主要讲解java中如何调用C/C++,C/C++中如何调用java,并带Demo和调试指南
android通过jni的形式open video显示视频,C语言, 需要 给/dev/video0 加权限, chmod 777 -R /dev/video0。 不通过camera类 流程, 直接用C语言调用 linux V4l2 接口
使用C/C++实现Java的Native方法接口(JNI)/ JNI编程(C/C++) 代码实例
springboot+jna/jni调用动态so/dll库
JNI开发Java调用C传递int、String、Array类型参数; 详情参考: int类型: (https://blog.csdn.net/niuba123456/article/details/80959892) String类型(https://blog.csdn.net/niuba123456/article/details/80977247);...
通过openssl生成两对公钥私钥,实现rsa双密码非对称加解密。加解密工作通过c++实现封装,再通过jni实现java对c++调用。可以实现c/s端的双向非对称加解密,且破解一端的加解密key不能独立同时实现加密和解密。
HevSocks5Tproxy HevSocks5Tproxy 是一个简单、轻量级的 Linux 透明代理。 特征IPv4/IPv6。...//github.com/heiher/hev-socks5-tproxy jnicd jnindk-build如何使用配置 main :socks5 : port : 1080 a
实现了Java和C之间的通信,相互调用。 本示例对应博客:《Android NDK开发之C、java互调》
public native String stringFromJNI(); public native double add(double a, double b); public native double sub(double a, double b); public native double multi(double a, double b); public native...