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

(转自http://fenger-chui.iteye.com/blog/1154435)

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

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

 1 <span style="font-size: medium;">

 2 import org.xvolks.jnative.JNative;

 3 import org.xvolks.jnative.Type;

 4 import org.xvolks.jnative.exceptions.NativeException;

 5 import org.xvolks.jnative.misc.basicStructures.DWORD;

 6 import org.xvolks.jnative.pointers.Pointer;

 7 import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;

 8 

 9 public class ADLLOP {

10     private  static  String dllNmae ="a.DLL";  //"a.dll"就是DLL的名称

11     public static int  disConnect(int hHandle) throws NativeException, IllegalAccessException

12     {

13     JNative jnative = new JNative(dllNmae,"disConnect");  //调用a.dll中disconnect方法

14       jnative.setRetVal(Type.INT);  //设置返回类型为int,也可以设置为float,string等类型

15       int pindex = 0;

16       jnative.setParameter(pindex++, hHandle);  //设置第一个参数为hHandle

17       jnative.invoke();  //正式执行这个函数

18       return jnative.getRetValAsInt();  //设置返回值为int,并返回

19     }

20 }

21 </span>

以上就是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)