继续讲解《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
jnative使用方法总结jnative使用方法总结jnative使用方法总结
TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论
jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....
jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4
Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码
java调用dll时所需的JNative.jar 以及JNativeCpp.dll(win),libJNativeCpp.so(linux) 和JNative的源码
手把手帮助你完全深度理解掌握Jnative 核心技术,实例众多
由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...
Jnative API CHM Jnative API CHM Jnative API CHM Jnative API CHM
jNative.jar jNativeCpp.dll libjNativeCpp.so 免费下载jNative.jar jNativeCpp.dll libjNativeCpp.so 免费下载jNative.jar jNativeCpp.dll libjNativeCpp.so 免费下载jNative.jar jNativeCpp.dll libjNativeCpp.so ...
使用JNative对条码打印机进行打印 因项目需要,对Godex EZ2300条码机进行调用打印, 驱动为Ez2000.dll, 用JNI可以实现调用,但比较麻烦, 需 要用到VC6进行DLL封装
JNative.rar JNative.rar JNative.rar JNative.rarJNative.rar
JNative.jar , JNativeCpp.dll ,libJNativeCpp.so,java通过JNative调用动态dll所需的文件jar
Java调用c++的dll文件
JNative1.3.2,jNative-1.3.2src
由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...
JNative api说明文档,也没什么好说的,自己看吧
//以下部分使用qt编译到so,注意在函数声明前加 extern "C" //如extern "C" const char* getLocalHost(); JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); ...