JNI应该是先参照Java的接口,然后用C/C++调用对应的本地j类型来实现。

解决方案 »

  1.   

    你可以直接查一下jni的头文件啊,在jdk中
      

  2.   

    在你的JNI中用C++的结构类型就可以了
      

  3.   

    在C/C++里存在的类在Java里没有对应的数据结构,你需要自己写一个java类及其读写的代码。
    简单的方法:按struct/class的结构写一个java类,字段内容和struct/class一一对应,如过struct/class的成员包含其他struct/class,同样的方法。
    然后用GetField/PutField方法为每个成员写存取代码。
      

  4.   

    to taolei:
      谢谢你的回答,必须用GetField/PutField来存取结构中的成员吗?能否给出一个具体的例子?
      

  5.   

    就是读写java对象的字段啊,这个例子到处都有啊。
      

  6.   

    to taolei:
       我还是没有找到,能否具体给我一个jni这样的例子?
      

  7.   

    查了一下,还有什么访问对象的域GetFieldID什么的,搞不懂,又找不到资料。
    比如dll 中func(A* a)
    struct A 
    { char *name;
      float f;}
    应该怎么写对应的类,GetField/PutField是private的还是public的?
    呵呵,请教taolei等高手。
      

  8.   

    class  A
    {
         jchararray name;   //将指针转换为数组
         jfloat     f;
    }这样就可以在JNI里对应传过去了
      

  9.   

    不急,谢谢taolei。
    我的email:
    [email protected]
      

  10.   

    不知道你c/c++的基础如何,
    http://java.sun.com/docs/books/jni/
    里面有完整的JNI文档,还有example。