本帖最后由 lovetulong 于 2011-06-23 17:56:42 编辑

解决方案 »

  1.   

    void*不可能传递给Java,结贴吧。真的。void*在C/C++里面意味着 指向任何类型的 指针。
      

  2.   

    C的东西吧
    java中 void 是无返回值的关键字不明白,不过可以去C版块去问问~
      

  3.   

    不是void而是void*,是任意类型的指针……
      

  4.   

    你可以把它当成int保存起来,下次从int转换成void *就行
      

  5.   

    看下JNI里面的语法,或许对你有些帮助哦!
      

  6.   


    jNative.setRetVal(Type.INT);
    int i = jNative.getRetVal();
    保存成Int的操作是不是上面那样?从int怎么转换成void *呢?
      

  7.   

    void*为何一定要在java端实现呢?
    java调用第三方dll不是这样做的,java不直接调用第三方dll,因为第三方dll未必符合JNI规范,也就是说有些jvm.h的信息,第三方dll可能就没使用,这样就无法识别jni的java类型,也就是java和第三方dll的类型就不能直接转换,所以一般java不直接调用第三方dll。
    一般做法是在java段写个native方法,编译生成class,然后用javah生成C的头文件,然后在C里用这个头文件写个dll(这个dll叫第二方dll,也就是java直接调用的),在这个第二方dll去调用第三方dll,这样,因为第二方dll也是C写的,所以类型很容易协调。所以你的void*可以在自己写的java能直接调用的第二方dll里去定义。