typedef USHORT apiReturn;apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);上面是VC 的DLL 一个函数的声明,动态库的名字:RFSAPIV2.dll下面是我填的一部分类型声明不知道咋整, 该如何声明呢?
不知是否用下面的格式在JAVA里public static class apiReturn extends Structure
  {
  public int apiReturn;
  }import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
  public interface RFSAPIV2 extends Library {  RFSAPIV2 INSTANCE = (RFSAPIV2)
  Native.loadLibrary("RFSAPIV2",
  RFSAPIV2.class);
    
  接下来应该声明 “apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);”
  函数 在这个地方如何声明呢?  }
  
结贴及时 100%结贴率

解决方案 »

  1.   


    “apiReturn _stdcall ConnectScanner(HANDLE *hScanner, char *szPort, int nBaudRate);”
    这个函数里的第一个参数
     “HANDLE *hScanner” 该如何处理呢?
      怎么声明?  int ConnectScanner("????",String port, int baud);
      另在 VC的 DLL 中,函数的返回 apiReturn  我在JAVA里的声明是:
      public static class apiReturn extends Structure
      {
        public int apiReturn;
      }
      因此,上面的声明“int ConnectScanner("????",String port, int baud);”
      前面的返回类型用int 应该不妥吧?
      
      

  2.   

    typedef void* HANDLE
    Pointer
      

  3.   

    就算是这个,,网上搜索的 JAVA 与 C 类型 互换的列表,也没发现 INT * 这个对应的
      

  4.   

      LZ 怎么有这么多印章啊  羡慕啊
         java的指针是给隐藏了啊
      

  5.   

    网上的关于 HANDLE 的处理方法:
     CODE:class HANDLE extends PointerType {
      private boolean immutable;
      public HANDLE() { }
      public HANDLE(Pointer p) { setPointer(p); immutable = true; }
      public Object fromNative(Object nativeValue, FromNativeContext context) {
      Object o = super.fromNative(nativeValue, context);
      if (INVALID_HANDLE_VALUE.equals(o))
      return INVALID_HANDLE_VALUE;
      return o;
      }
      public void setPointer(Pointer p) {
      if (immutable)
      throw new UnsupportedOperationException("immutable reference");
      super.setPointer(p);
      }
      }
    添加进工程时 ,还未编译,,应该是代码语法检查时
    if (INVALID_HANDLE_VALUE.equals(o))
      return INVALID_HANDLE_VALUE;在这个地方提示错误:
     为找到的符号:INVALID_HANDLE_VALUE 没用哟
     又换成 BYREFERENCE , LONGBYREFERENCE 等都试过了
     还是不行 最后无奈,居然给我给摸索了一个方法 哈