继续讲解《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是一个开源的Java本地接口(JNI)工具包,它简化了Java程序与本地代码之间的交互过程,使得开发者无需深入理解复杂的JNI接口就能实现跨语言调用。 **1. JNative的原理** JNative的核心是基于JNI(Java ...
jnative使用方法总结jnative使用方法总结jnative使用方法总结
TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论
《深入理解JNative:Java调用DLL的桥梁》 在Java世界中,由于其平台无关性的特性,直接调用本地动态链接库...通过深入理解JNative的原理和实践,开发者可以更好地驾驭Java与C/C++的混合编程,拓宽了Java应用的可能性。
《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地...通过对Jnative源码的学习,开发者可以深入掌握JNI原理,提升自己的编程能力。
《JNative综合学习指南》 在Java编程世界中,JNative是一个重要的工具,它允许Java程序直接调用...通过深入学习,你将能够熟练地利用JNative来解决那些仅靠纯Java难以解决的问题,提升你的编程技能和项目实施能力。
jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....
《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...
**JNative API说明文档** ...通过深入理解和熟练使用JNative API,开发者可以解决特定场景下的性能问题,提升应用程序的效率。而Javadoc作为API文档,是开发者学习和使用JNative不可或缺的参考资料。
//以下部分使用qt编译到so,注意在函数声明前加 extern "C" //如extern "C" const char* getLocalHost(); JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); ...
使用这个库,开发者可以在Java代码中通过简单的接口调用C++函数,而无需深入理解JNI的底层细节。 4. **JNI函数注册**:在C++的DLL或共享库中,需要使用JNI定义的函数注册表来声明和导出可供Java调用的函数。这些...
以下是使用JNative调用条码打印机驱动的基本步骤: 1. 获取JNative库:首先,你需要下载JNative的最新版本,例如JNative-1.3.2.zip,并解压缩。解压后会得到三个文件:JNative.jar、JNativeCpp.dll和libJNativeCpp....
JNative则是一个简化JNI使用的库,它提供了一些预定义的接口和类,使得开发者无需直接处理JNI的底层细节,如头文件的生成、JNI函数的定义等。JNative的核心是它的`callXXX`系列函数,例如`callStaticVoidMethod`、`...
首先,让我们深入理解JNative.jar的核心概念。JNative.jar是一个包含Java本地接口(JNI)函数的库,使得Java开发者能够无缝地集成和调用本地(非Java)代码。它通常由两部分组成:Java层的API和本地层的实现。Java层...
《深入理解Java调用DLL与Win API:JNative.jar解析》 在Java编程环境中,有时候我们需要调用操作系统底层的功能,例如Windows API,这时就需要借助于像JNative.jar这样的工具库。JNative.jar是一个专为Java设计的库...
在使用JNative之前,我们需要了解一些基本概念。例如,`libJNativeCpp.so`是适用于Linux平台的动态链接库,而`JNativeCpp.dll`则适用于Windows平台。这两个文件需要放置在相应的系统库目录下,以便被Java应用程序...
《深入解析JNative:连接Java与C++的桥梁》 JNative,作为一款强大的库,为Java程序员提供了与C++代码交互的能力。它允许Java应用程序调用C++编写的动态链接库(DLL或.so),从而扩展了Java的功能,特别是在处理...
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