`
fenger_chui
  • 浏览: 103073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

   继续讲解《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使用深入解析——传递复杂结构体》,讲解传递结构体的基本方法。

4
4
分享到:
评论
3 楼 lijunwyf 2016-08-30  
a.DLL 文件能否上传一下?
2 楼 yelr_j 2013-09-07  
很好,我也正在学习。
1 楼 mushubingfeng 2013-09-06  
很好很强大的文章,谢谢作者,

相关推荐

    jnative简单的使用

    jnative jnative jnative jnative

    jnative使用方法总结

    jnative使用方法总结jnative使用方法总结jnative使用方法总结

    JNative使用示例

    TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论

    JNative v1.3 docs

    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 1.4

    Jnative资源包源码

    Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码Jnative资源包源码

    JNative.jar以及JNative源码

    java调用dll时所需的JNative.jar 以及JNativeCpp.dll(win),libJNativeCpp.so(linux) 和JNative的源码

    JNative完全自学手册

    手把手帮助你完全深度理解掌握Jnative 核心技术,实例众多

    Jnative-1.3.2及心得

    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...

    Jnative API CHM

    Jnative API CHM Jnative API CHM Jnative API CHM Jnative API CHM

    JNative相关jar包和dll ,so文件.zip

    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对条码打印机进行打印(转别人)

    使用JNative对条码打印机进行打印 因项目需要,对Godex EZ2300条码机进行调用打印, 驱动为Ez2000.dll, 用JNI可以实现调用,但比较麻烦, 需 要用到VC6进行DLL封装

    JNative.rar

    JNative.rar JNative.rar JNative.rar JNative.rarJNative.rar

    jnative下载

    JNative.jar , JNativeCpp.dll ,libJNativeCpp.so,java通过JNative调用动态dll所需的文件jar

    jnative

    Java调用c++的dll文件

    JNative1.3.2

    JNative1.3.2,jNative-1.3.2src

    JNative_1.4RC3_src

    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...

    JNative api说明文档

    JNative api说明文档,也没什么好说的,自己看吧

    linux jnative 调用.so方法及附属全部库和源码

    //以下部分使用qt编译到so,注意在函数声明前加 extern "C" //如extern "C" const char* getLocalHost(); JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); ...

Global site tag (gtag.js) - Google Analytics