一、c/c++语言:
1.关于动态链接库的搜索问题:
LIBRARY_PATH is used by gcc before compilation to search for directories containing libraries that need to be linked to your program.
LD_LIBRARY_PATH is used by your program to search for directories containing the libraries after it has been successfully compiled and linked.
 
二、java中的数据类型与c语言中的数据类型转化问题
1.java中的long类型为8个字节而c语言中的long类型为4个字节,所以应当在java中使用int来对应c语言中的long或者unsigned long类型
下面给一个简单示例:
 1 JNIEXPORT jint JNICALL example
2 (JNIEnv * env, jclass obj, jstring address, jshort port,
3 jstring username, jstring password, jlong channel,
4 jintArray start_time, jintArray end_time, jstring path){
5
6 const char* addr = env->GetStringUTFChars(address, NULL);
7 const char* uname = env->GetStringUTFChars(username, NULL);
8 const char* pwd = env->GetStringUTFChars(password, NULL);
9 char* p = (char*)env->GetStringUTFChars(path, NULL);
10 jint* start = env->GetIntArrayElements(start_time, NULL);
11 jint* end = env->GetIntArrayElements(end_time, NULL);
12 int code = download(addr, (WORD)port, uname, pwd, (DWORD)channel, (DWORD*)start, (DWORD*)end, p);
13 env->ReleaseStringUTFChars(address, addr);
14 env->ReleaseStringUTFChars(username, uname);
15 env->ReleaseStringUTFChars(password, pwd);
16 env->ReleaseStringUTFChars(path, p);
17 env->ReleaseIntArrayElements(start_time, start, 0);
18 env->ReleaseIntArrayElements(end_time, end, 0);
19
20 return code;
21 }

上例中的DWORD就是unsigned long的别名。我们使用的是jintArray.

三、jni加载动态库在windows和linux平台上的不同规则

对于System.loadLibrary("nvr");在windows上加载的是nvr.dll文件而在linux上加载的是libnvr.so文件

四、对于jni方法中返回值为jintArray类型的处理方法

// 新建一个数组
jintArray arr = env->NewIntArray(2);

// 获取数组第一个元素的地址
jint* el = env->GetIntArrayElements(arr, NULL);
// 给数组中的元素赋值
*el = result[0];
*(el+1) = result[1];
最后把数组返回即可return arr;

jni有关知识点总结的更多相关文章

  1. [转载]—— Android JNI知识点

    Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 ...

  2. 深入浅出 - Android系统移植与平台开发(九)- JNI介绍

    作者:唐老师,华清远见嵌入式学院讲师. JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官 ...

  3. Java最重要的21个技术点和知识点

    (五)Java最重要的21个技术点和知识点之网络编程.泛型.编程规范相关 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚 ...

  4. 给Java新手的一些建议----Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  5. JNI/NDK开发指南(开山篇)

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/41759643 相信很多做过Java或Android开发的朋友经常会接触到JNI方面的技术, ...

  6. java知识点梳理

    网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) ...

  7. JNI介绍(转)

    源:JNI介绍 JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的An ...

  8. 知名互联网公司校招 Java 开发岗面试知识点解析

    天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...

  9. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

随机推荐

  1. vue3-动态组件的要点

    <!--动态组件--> <!--缓存,只缓存about和home组件--> <keep-alive exclude="about" > < ...

  2. docker 部署mysql tomcat时 在root@localhost~下——-——docker exec -it 容器名 /bin/bash 报错

    在docker部署mysql时 报错 找不到 容器不自动启动  , docker start 容器名  也没有效果 多次尝试发现 原因是创建容器时在 下面创建的 更改为下创建 问题解决

  3. Paypal标准支付对接

    提醒一下,题主是在快速标准支付做到一半的时候换成了标准支付,所以该文档的快速支付大家做个参考就可以了. 一.两种支付方式 标准支付 优点:纯前端对接,简单方便,适用于非技术开发人员.个人即可用,不用花 ...

  4. 6月13日 python学习总结 Django框架

    1. 内容回顾 1. 基础必会三件套 from django.shortcuts import HttpResponse, render, redirect - HttpResponse(" ...

  5. windows server 2019 域控批量新增不用,只看这一篇就够了,别的不用看

    windows server 2019 域控批量新增不用,只看这一篇就够了,别的不用看 1. 新建excel表格 A B C D E 姓 名 全名 登录名 密码 李 四 李四 李四 test123!@ ...

  6. CF1545X Codeforces Round #732

    A. AquaMoon and Strange Sort 叉人题 如果数字各不相同,只需要统计每个数参与构成的逆序对总数,如果是奇数一定最终朝左,偶数朝右.无意义的数字交换对方向是没有影响的 继续考虑 ...

  7. java字节流和字符流,以及java文件操作

    A.首先说字节流:1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组.InputStream是所有字节输入 ...

  8. 什么是内部类?Static Nested Class和Inner Class的不同?

    内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中.在方法外部定义的内部类前面可以加上st ...

  9. 为什么要用 Dubbo?

    随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越 复杂,诞生了面向服务的架构体系(SOA), 也因此衍生出了一系列相应的技术,如对服务提供.服务调用.连接处理.通信 协议.序列化 ...

  10. 阐述 ArrayList、Vector、LinkedList 的存储性能和特性?

    ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的 数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉 及数组元素移动等内存操作,所以索引数 ...