JNative使用深入解析——基本编程

阅读更多

   继续讲解《Jnativ的使用深入解析》,在这一章节中,我们将解析jnative最基本的使用,以及一些常见问题及其解决方法。

   首先我们先给出一段小代码,然后一步一步解析这段小代码,通过这段小代码,我们就知道Jnative的使用是多么的简单。

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.misc.basicStructures.DWORD;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;


public class ADLLOP {
        private  static  String dllNmae ="a.DLL";
public static int  disConnect(int hHandle) throws NativeException, IllegalAccessException
	{
		JNative jnative = new JNative(dllNmae,"disConnect");
		jnative.setRetVal(Type.INT);
		int pindex = 0;
		jnative.setParameter(pindex++, hHandle);
		jnative.invoke();
		return jnative.getRetValAsInt();
	}
}

  其中成员变量"a.dll"就是DLL的名称。

  //调用a.dll中disconnect方法

  JNative jnative = new JNative(dllNmae,"disConnect");

  //设置返回类型为int,也可以设置为float,string等类型

  jnative.setRetVal(Type.INT);

  //设置第一个参数为hHandle

  jnative.setParameter(pindex++, hHandle);

  //正式执行这个函数

   jnative.invoke();

 //设置返回值为int,并返回

   return jnative.getRetValAsInt();

 

以上就是jnative的一个例子,你看,使用是多么的方便呀,当然这只是最基本的一个例子,比如传递指针呀,数组呀,以及传出参数如何传递都还没有涉及。

以上的代码运行可能会出现以下的问题

(1)Exception in thread "main" org.xvolks.jnative.exceptions.NativeException: DLL a  not found

 

(2)fuction XXX not found.

 

出现以上的问题可能由以下的原因引起:

 

(1)检查所要调用的DLL是否已经放入system32目录下,并且其依赖的DLL都已经全部放入。

 

(2)如果所要调用的DLL放入的是其他的目录,检查是否配置环境变量path.其依赖的DLL是否放入完全此目录。

 

(3)代码中的方法名称是否准确。

 

(4)系统时间是否准确,如果系统时间时间不准确,可能也会影响调用的顺利进行。

 

以上就是最基本的jnative的使用。下一章节将进入《JNative使用深入解析——传递复杂结构体》,讲解传递结构体的基本方法。

你可能感兴趣的:(jnative,jnative的使用,jnative基础,jnative,DLL,not,found,jnative,function,not,found)