`
fenger_chui
  • 浏览: 104099 次
  • 性别: 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是一个开源的Java本地接口(JNI)工具包,它简化了Java程序与本地代码之间的交互过程,使得开发者无需深入理解复杂的JNI接口就能实现跨语言调用。 **1. JNative的原理** JNative的核心是基于JNI(Java ...

    jnative使用方法总结

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

    JNative使用示例

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

    JNative.jar以及JNative源码

    《深入理解JNative:Java调用DLL的桥梁》 在Java世界中,由于其平台无关性的特性,直接调用本地动态链接库...通过深入理解JNative的原理和实践,开发者可以更好地驾驭Java与C/C++的混合编程,拓宽了Java应用的可能性。

    Jnative资源包源码

    《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地...通过对Jnative源码的学习,开发者可以深入掌握JNI原理,提升自己的编程能力。

    JNative综合学习资料

    《JNative综合学习指南》 在Java编程世界中,JNative是一个重要的工具,它允许Java程序直接调用...通过深入学习,你将能够熟练地利用JNative来解决那些仅靠纯Java难以解决的问题,提升你的编程技能和项目实施能力。

    JNative v1.3 docs

    jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....

    org.xvolks.jnative 源码

    《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...

    JNative api说明文档

    **JNative API说明文档** ...通过深入理解和熟练使用JNative API,开发者可以解决特定场景下的性能问题,提升应用程序的效率。而Javadoc作为API文档,是开发者学习和使用JNative不可或缺的参考资料。

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

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

    jnative

    使用这个库,开发者可以在Java代码中通过简单的接口调用C++函数,而无需深入理解JNI的底层细节。 4. **JNI函数注册**:在C++的DLL或共享库中,需要使用JNI定义的函数注册表来声明和导出可供Java调用的函数。这些...

    使用JNative对条码打印机进行打印(转别人)

    以下是使用JNative调用条码打印机驱动的基本步骤: 1. 获取JNative库:首先,你需要下载JNative的最新版本,例如JNative-1.3.2.zip,并解压缩。解压后会得到三个文件:JNative.jar、JNativeCpp.dll和libJNativeCpp....

    在Java程序中使用JNative调用dll文件

    JNative则是一个简化JNI使用的库,它提供了一些预定义的接口和类,使得开发者无需直接处理JNI的底层细节,如头文件的生成、JNI函数的定义等。JNative的核心是它的`callXXX`系列函数,例如`callStaticVoidMethod`、`...

    JNative.jar 包

    首先,让我们深入理解JNative.jar的核心概念。JNative.jar是一个包含Java本地接口(JNI)函数的库,使得Java开发者能够无缝地集成和调用本地(非Java)代码。它通常由两部分组成:Java层的API和本地层的实现。Java层...

    jnative.jar

    《深入理解Java调用DLL与Win API:JNative.jar解析》 在Java编程环境中,有时候我们需要调用操作系统底层的功能,例如Windows API,这时就需要借助于像JNative.jar这样的工具库。JNative.jar是一个专为Java设计的库...

    JNative用java调用动态库VC++

    在使用JNative之前,我们需要了解一些基本概念。例如,`libJNativeCpp.so`是适用于Linux平台的动态链接库,而`JNativeCpp.dll`则适用于Windows平台。这两个文件需要放置在相应的系统库目录下,以便被Java应用程序...

    jnative源码和文档,包含JNativeCpp.dll和libJNativeCpp.so

    《深入解析JNative:连接Java与C++的桥梁》 JNative,作为一款强大的库,为Java程序员提供了与C++代码交互的能力。它允许Java应用程序调用C++编写的动态链接库(DLL或.so),从而扩展了Java的功能,特别是在处理...

    JNative完全自学手册

    JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握...本手册旨在帮助读者快速掌握JNative技术,通过实例讲解,让读者深入理解JNative的核心知识点。

    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

Global site tag (gtag.js) - Google Analytics