一、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;

最新文章

  1. C#连接Oracle数据库(直接引用dll使用)
  2. LeetCode:Ransom Note_383
  3. adding validation annotators to model classes 在linq to EntityFrame的Model中添加前台验证validation annotators
  4. magento获取页面url的办法还有magento的常用函数
  5. sql server 数据页缓冲区的内存瓶颈分析
  6. Request 获取Url
  7. .Net 插入数据MySql数据库,中文乱码解决问题
  8. oracle查看所有表及字段
  9. OpenGl编程指南第7版(红宝书)环境配制
  10. websocket技术分享
  11. 把项目中的那些恶心的无处存储的大块数据都丢到FastDFS之快速搭建
  12. ES6的模块化规范和CommonJS的模块化规范的差异
  13. Spring Boot配置定时任务
  14. DWM1000 帧过滤代码实现
  15. #5 Python面向对象(四)
  16. tp5数据库链接
  17. Python开发——函数【基础】
  18. win7x64上配置 vs2015
  19. windows命名管道
  20. iOS开发-适配器和外观模式

热门文章

  1. Golang 基础之基础语法梳理 (一)
  2. jdk配置完成tomcat无法启动问题解决
  3. 论文解读(VGAE)《Variational Graph Auto-Encoders》
  4. python爬取今日头条图片
  5. Android 12(S) 图形显示系统 - Surface 一点补充知识(十二)
  6. k8s集群搭建过程详解
  7. 【推理引擎】在 VS Code 调试 ONNXRuntime 的测试单元
  8. 使用过 Redis 做异步队列么,你是怎么用的?
  9. Chroot 特性 ?
  10. HttpServletRequest.getInputStream()多次读取问题