public Pointer hScanner = new Pointer(10);
调用DLL时,,有个返回句柄的问题按上面声明,编译报如下的错误提示
怎么回事呢?E:\RaiReader\RaiReader\src\raireader\RaiReaderView.java:40: Pointer(long) 在 com.sun.jna.Pointer 中不是公共的;无法从外部软件包中对其进行访问
应该如何声明呢?谢谢

解决方案 »

  1.   

     Pointer(long) 这个构造方法不是public的
      

  2.   

    Pointer的构造函数Pointer(long)不是public的。所以你不能访问。你直接这样就行了:
    public Pointer hScanner = Pointer.createConstant(10);
      

  3.   

    问题是,我看到别人用月食的开发工具中
    public class Main {
    public PointerByReference p_hScanner = new PointerByReference();
    public Pointer hScanner = new Pointer(10);
    public IntByReference p_hSocket = new IntByReference(10);看红色的部分 就不报错呢
    我用的是NETBEANS 6.9 环境,,这么声明,就报主贴中的错误
    何解呢?
      

  4.   

    public Pointer hScanner = Pointer.createConstant(10);
    刚试了下
    这个申明是可以的,,程序正常,功能正常也
    我就是纳闷
    public Pointer hScanner = new Pointer(10); 这样的声明咋就不行呢?
      

  5.   

    额……我也是Java新手……这个很明显啊……
    Pointer(long) 这个构造方法不是public的
    但是有……Pointer类里有
    public static Pointer createConstant(参数)这个方法……
      

  6.   

    你去看它的源代码,声明带long参数的构造函数是这样的:
    Pointer(long peer) {
        this.peer = peer;
    }前面没有任何控制符,也就是默认的friendly,其它package里的类是无法访问的。别人的可以访问,只能说明他写的达到了friendly的访问条件:就是在同一个包中调用。