import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
public class TestDll {
 private static final String dll="und.dll";
 public static void main(String[] args){
  try {
   JNative n=null;
    if(JNative.isLibraryLoaded(dll)){
     System.out.println("...........");
    }else{
     n=new JNative(dll,"open");
     n.setRetVal(Type.INT);
     n.setParameter(0,Type.INT,"1");
              n.invoke();
              String str=n.getRetVal();
              System.out.println(str.length()+"....."+str);
              if(n.getRetValAsInt()==2){
                JNative jn=new JNative(dll,"Getopp");
                jn.setRetVal(Type.STRING);
                jn.invoke();
                String str1=jn.getRetVal();                
                Pointer pointer1=createPointer();
                JNative j=new JNative(dll,"Getoop");
                j.setRetVal(Type.STRING);
                j.setParameter(0,pointer1);
                j.invoke();
                String str2=j.getRetVal();
                System.out.println(str2+str2.length());
                String ID=str2.substring(0,16);
                System.out.println(ID+"id.....");
                String obj="";
                String s1=str2.substring(16,17);
                System.out.println("s1..."+s1);
                if(s1.equals("=")){
                 System.out.println("if");
                 obj=str2.substring(0,16);
                 System.out.println(obj);
                }else{
                 System.out.println("else");
                 obj=str2.substring(0,19);
                }
              }
    }
  } catch (NativeException e) {
   System.out.println(e.getMessage());
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   System.out.println(e.getMessage());
   e.printStackTrace();
  }
 }
}
这个程序纠结了一周后,今天终于搞定了,开始不明白是什么意思,后来才知道,之前为什么我通常会得到一个int类型的×××数字,而不是想要的字符串结果?原因并不是getRetVal()方法有问题,而是因为我在调用第一个方法打开端口后,本该执行另外的两个返回得到想要的返回结果,但是我却一直在考虑open方法从哪里得到返回结果?之所以这样想的原因是因为第一个方法执行后控制台会打印结果,但是返回值始终都是一个×××的数字,所以比较纠结,为啥我总是不可能在第一个返回截取返回值,而后我在正常执行第一个方法后,然后接着执行第二个方法后和第三个方法后,返回结果终于在getRetVal方法中得到了!呵呵,关于这个问题,可能本人描述不是很清楚,大家如果遇到类似的问题可以直接问我就OK了,或者加138153063QQ群,也可以!呵呵就写到这里了。