码迷,mamicode.com
首页 > 其他好文 > 详细

JNA 备注

时间:2017-05-31 19:00:57      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:style   .lib   read   引用   encoding   结构体   传值   size   c/c++   

最近写JNA调用DLL的代码比较多。应该这样说,C的精华在于对指针的灵活运用,而用JNA调用C/C++最痛苦的也在于此。你不知道该用什么样的方式去对应C/C++的方法,特别是遇到指针、结构体指针、指针作为出参、入参或返回值等等。本文主要把最近遇到并解决了一些问题,备注如下:

1、C++的工程被JNA调用前,要增加extern "C";否则的话方法名字会无法识别;

2、byte[]作为入参的时候可直接使用java的byte[],若作为出参使用ByteByReference;

3、指针和引用都使用ByReference,例如int*或int& 都用IntByReference;

4、结构体作为参数传值时记得增加write方法,例如strXX.write(),用以将值写入内存;反之则采用read方法;

5、结构体指针,在C/C++里是需要强转的情况;可以直接用Pointer(不论是作为返回值,还是入参),也就相当于用void*的指针,最后用Pointer的write方法去写值就可以;

6、可以通过setProperty方法设置编码格式和路径,如下:

static{
        System.setProperty("jna.encoding","utf-8");
        System.setProperty("jna.library.path","E://lib");
    }

7、用JNA时,记得释放资源;你相当于在操作new或malloc;

 

JNA 备注

标签:style   .lib   read   引用   encoding   结构体   传值   size   c/c++   

原文地址:http://www.cnblogs.com/Fredric-2013/p/6925290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!