关于JNA、JNI的使用注意
2015-05-07 10:05
267 查看
闲话不说,项目中要用到Java调用JNA。。。然后就投入学习。。。
引学习连接,JNA参考良少大神滴~三篇文章
http://blog.csdn.net/shendl/article/details/3589676 http://blog.csdn.net/shendl/article/details/3599849 http://blog.csdn.net/shendl/article/details/3599854
额这个地方要额外提及一下,关于生成dll之后,放的位置,
如果放的位置不对,会报java.lang.UnsatisfiedLinkError: Unable to load library 的异常
如果是javaProject直接放到项目的目录下,啥叫项目的目录来,来个简单的,那就是
这个目录下。。。额。。如果是web项目的参考这篇文章,
http://www.cnblogs.com/zfc2201/archive/2011/09/02/2163268.html
当然也有动态加载dll的
http://blog.csdn.net/ctllin/article/details/32726799
JNA还是很简单的 经过实践,都OK。。。但是到自己的弄的时候就崩溃了
直接哭死了要。。。简单说明一下
struct coord {
int type;
double a, b;
};
struct target {
short code;
struct coord coord;
};
struct track {
int type;
/* target list */
int ntarget;
struct target targets[128];
};
这酸爽那,各种试验了一般,JVM各种崩溃报错。。。又不会处理肿么办。。好吧。。其实吧,看看JNA人家也没说一定要各种对应,自己写个方法把c里边的目标方法包含进去,期间不要涉及c的struct不就OK了?干啥一定要对应,例如用string接受,好吧,这样性能上看貌似丢失了,但是,仔细看一下jna的规范就知道,JV
4000
M在对应一个比较复杂的struct的时候的办法浪费的资源也不少对吧?所以,效率吗,不知道,但是上手程度 duangduang的就降低了啊,还有就是基本所有的例子 c方法的返回值都是void,我这用java用string接受的话,那么c用char*(JNA规范)不就搞定了吗,困挠了好长时间的问题就搞定了!
好吧。。。以后再遇到JNA的问题,如果自定义结构体比较复杂麻烦的话,还是尽量的使用简单的方法,实在是看不懂JVM崩溃的日志啊。。。尼玛
============================================不得不说的故事============================================
中间在没想到c中封装目标方法的时候,JNA搞不定的时候,想尝试一下JNI(后来果断是TM的自虐啊!!有么有!!)
参考了许多文章觉得这个还算是靠谱
http://www.cnblogs.com/charley_yang/archive/2011/03/13/1982516.html
下边并不是纠正神马错误之类的,仅仅是做一个补充,因为可能作者打的太顺手了,呼呼的就搞定了。。我这跟着学习做的时候,各种搞不定那,嗨嗨
第一个就是关于.class文件变为.h文件的问题
找位置一定不能找错了
参考文章
http://blog.csdn.net/beroy/article/details/4155482
一定要这么弄哇,不要跑到jni的包名下边了。。。就在classes这个地方 然后jni.test
第二个问题就是关于,include<jni.h>报错肿么办 本人用的是vs2012
参考文章http://www.it165.net/pro/html/201402/9838.html
OK都搞定了就阔以了。。。但是jni真TM难用。。果断的投入JNA的怀抱
P.S.:JNA的规范,良少的文章里边有,就不上传了
引学习连接,JNA参考良少大神滴~三篇文章
http://blog.csdn.net/shendl/article/details/3589676 http://blog.csdn.net/shendl/article/details/3599849 http://blog.csdn.net/shendl/article/details/3599854
额这个地方要额外提及一下,关于生成dll之后,放的位置,
如果放的位置不对,会报java.lang.UnsatisfiedLinkError: Unable to load library 的异常
如果是javaProject直接放到项目的目录下,啥叫项目的目录来,来个简单的,那就是
这个目录下。。。额。。如果是web项目的参考这篇文章,
http://www.cnblogs.com/zfc2201/archive/2011/09/02/2163268.html
当然也有动态加载dll的
http://blog.csdn.net/ctllin/article/details/32726799
JNA还是很简单的 经过实践,都OK。。。但是到自己的弄的时候就崩溃了
直接哭死了要。。。简单说明一下
struct coord {
int type;
double a, b;
};
struct target {
short code;
struct coord coord;
};
struct track {
int type;
/* target list */
int ntarget;
struct target targets[128];
};
这酸爽那,各种试验了一般,JVM各种崩溃报错。。。又不会处理肿么办。。好吧。。其实吧,看看JNA人家也没说一定要各种对应,自己写个方法把c里边的目标方法包含进去,期间不要涉及c的struct不就OK了?干啥一定要对应,例如用string接受,好吧,这样性能上看貌似丢失了,但是,仔细看一下jna的规范就知道,JV
4000
M在对应一个比较复杂的struct的时候的办法浪费的资源也不少对吧?所以,效率吗,不知道,但是上手程度 duangduang的就降低了啊,还有就是基本所有的例子 c方法的返回值都是void,我这用java用string接受的话,那么c用char*(JNA规范)不就搞定了吗,困挠了好长时间的问题就搞定了!
_declspec(dllexport)char* toParse(const unsigned char *packet, const int nbytes,const int type);// void parse(const unsigned char *packet, const int nbytes, const int type, struct track *track, char *text);//
好吧。。。以后再遇到JNA的问题,如果自定义结构体比较复杂麻烦的话,还是尽量的使用简单的方法,实在是看不懂JVM崩溃的日志啊。。。尼玛
============================================不得不说的故事============================================
中间在没想到c中封装目标方法的时候,JNA搞不定的时候,想尝试一下JNI(后来果断是TM的自虐啊!!有么有!!)
参考了许多文章觉得这个还算是靠谱
http://www.cnblogs.com/charley_yang/archive/2011/03/13/1982516.html
下边并不是纠正神马错误之类的,仅仅是做一个补充,因为可能作者打的太顺手了,呼呼的就搞定了。。我这跟着学习做的时候,各种搞不定那,嗨嗨
第一个就是关于.class文件变为.h文件的问题
找位置一定不能找错了
参考文章
http://blog.csdn.net/beroy/article/details/4155482
一定要这么弄哇,不要跑到jni的包名下边了。。。就在classes这个地方 然后jni.test
第二个问题就是关于,include<jni.h>报错肿么办 本人用的是vs2012
参考文章http://www.it165.net/pro/html/201402/9838.html
OK都搞定了就阔以了。。。但是jni真TM难用。。果断的投入JNA的怀抱
P.S.:JNA的规范,良少的文章里边有,就不上传了
相关文章推荐
- 关于使用存储过程的一些好处以及注意事项
- 在WEB程序中使用.NET Remoting的IpcChannel时注意事项(关于“拒绝访问”问题的解决)
- 关于使用存储过程的一些好处以及注意事项
- 关于Java开发中使用Oracle数据库的一点注意事项
- 在Asp.net 2.0中关于menu和treeview的几点使用注意!
- 关于使用READ TABLE语句的几点注意事项...(原文来源于网络)
- 关于使用READ TABLE语句的几点注意事项...(原文来源于网络)
- 关于使用Carbide编译及配置的一点注意事项
- 关于在Linux下使用select函数需要注意的地方
- 关于笔记本使用的几点注意事项
- 关于数据库中使用 left join on ...and ...和 left join on ....where ...区别,和使用group by 要注意的情况
- 关于Javascript定义函数和this使用的两点注意的地方
- 关于在oracle中是使用索引的几点注意事项
- 关于使用存储过程的一些好处以及注意事项[转]
- 关于使用标签需要注意的几个问题
- 关于Flex使用Blazeds连接Java后台的一个注意笔记
- JNI使用注意事项
- 关于SelectOjbect使用需要注意的一些问题
- 关于使用索引(Index)的一些注意点
- 注意关于花露水的4大使用误区 - 生活至上,美容至尚!