huixion
边缘颓废之
2017-12-20 02:12
采纳率: 100%
浏览 1.2k
已采纳

Java使用 JNA 调用dll 文件

求助:参数为 Structure** 这种 ,java中该怎么定义该参数类型呢?已经如何初始化呢?
例如:
c中的方法是(Face是 Structure 类型):
int Detect(Face** faces,int* count);

在java中要怎么定义这个方法的参数?及如何初始化?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • huixion
    边缘颓废之 2018-01-03 06:40
    已采纳

    自己解决了,给其他不会的留个答案。
    Face** faces 参数声明为 PointerByRefence 类型,例如:
    Face.ByValue face = new Face.ByValue();//Face是自定义的构造体,网上搜一下就知道怎么写。
    PointerByReference face_arrays = new PointerByReference(face.getPointer());

        最终结果 face_arrays.getValues() 得到指针,再根据指针获取值
    
    点赞 评论
  • caozhy
    点赞 评论
  • huixion
    边缘颓废之 2017-12-20 02:23

    参数是 Structure** 这种形式,不是Structure* 这种,求解答。。

    点赞 评论
  • ZhihengTao
    ZhihengTao 2017-12-20 03:39

    首先,java调用native方法(也就是c/c++)的方式叫做JNI
    其次,如何使用JNI(包括java---c/c++数据类型对应关系,native方法签名规则等),最好去找官方文档(google搜索: JNI 等关键字),你提问得到的答案
    也不过是别人找来的文档或哪里的博客,所以建议自己动手.

    点赞 评论
  • huixion
    边缘颓废之 2017-12-20 06:01

    没有写错哈,jna是java调用dll的一个框架,jni要自己写头文件什么的比较麻烦。。。

    点赞 评论

相关推荐