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使用深入解析——传递复杂结构体》,讲解传递结构体的基本方法。
作者:webbzhong
出处:http://www.cnblogs.com/webbzhong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号