`
xurichusheng
  • 浏览: 344771 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java中使用JNative调用dll方法

 
阅读更多

 

使用JNative调用dll方法,

dll 文件名为 : IMLib.dll、MTLib.dll、MT_PlaneLib.dll、InfraredSDK.dll。

 

这些dll之间有相互依赖关系。

 

这些dll文件都是自己写的C++代码生成的,由于涉及到商业,故在此不提供。

 

使用到的 jar 包是 : JNative.jar  见附件

 

1. C++接口及其描述

HANDLE IFR_API IFR_LoadFile(HWND WndWindow, char *cFileName, int iFileType, int *nBeginTime, int *nEndTime);
函数说明:装载录像文件。此函数会自动调用 IFR_Init函数
输入参数:	
WndWindow:图像播放设备的句柄,也是消息接收句柄,如果不需要通过SDK来显示图像只要传递NULL就可以。
cFileName:要加载的文件名及路径
iFileType:要加载的文件类型(0为DLI,1为DLV文件,2为JPG)
nBeginTime:文件起始时间
nEndTime:文件结束时间
返回值:> 0 加载文件后的操作句柄,同IFR_Init 返回的句柄。
	<= 0 加载失败

 

2.  在java中使用junit方法测试(junit4)

 

TestDll.java

import org.junit.Before;
import org.junit.Test;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;

public class TestDll {

	@Before
	public void setUp() throws Exception {

		try {

			String userDir = System.getProperty("user.dir")
					+ "\\src-resources\\dll\\";
			System.load(userDir.concat("IMLib.dll"));
			System.load(userDir.concat("MTLib.dll"));
			System.load(userDir.concat("MT_PlaneLib.dll"));
			System.load(userDir.concat("InfraredSDK.dll"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * @Title: test
	 * @deprecated: 使用JNative调用dll方法
	 * @author 
	 * @date 2014-3-3
	 */
	@Test
	public void loadFile() {
		try {
			String userDir = System.getProperty("user.dir");
			// 红外图像路径
			String imagePath = userDir+"\\src-resources\\images\\M113236.DLI";
			// 要加载的文件类型(0为DLI,1为DLV文件,2为JPG)
			Integer fileType = new Integer(0);
			// 参数说明:InfraredSDK为dll名, IFR_LoadFile为要调用的函数名
			JNative jn = new JNative("InfraredSDK", "IFR_LoadFile");
			// 设置此函数的返回值
			jn.setRetVal(Type.INT);

			//
			// jn.setParameter(0, Type.STRING, "");
			jn.setParameter(1, Type.STRING, imagePath);
			jn.setParameter(2, Type.INT, fileType.toString());
			// jn.setParameter(3, Type.STRING, "");
			// jn.setParameter(4, Type.STRING, "");

			// 执行
			jn.invoke();

			// 返回值
			int retVal = Integer.parseInt(jn.getRetVal());

			// 打印函数返回值
			System.out.println(retVal);

			if (retVal > 0) {
				System.out.println("加载红外图像成功");
			} else {
				System.out.println("加载红外图像失败");
			}

		} catch (NativeException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

3. 返回结果

1230045256
加载红外图像成功

 

分享到:
评论

相关推荐

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

    3. **调用DLL函数**:使用JNative提供的API,你可以直接调用DLL中的函数。例如,如果你有一个名为`myFunction`的本地方法,可以使用`JNative.callVoidMethod`或相应的函数进行调用。 4. **错误处理**:由于涉及到...

    简单jnative调用dll例子(含dll代码)

    首先定义Java中的JNI接口,然后使用`javah`生成C/C++的头文件,接着编写并编译DLL,最后在Java程序中加载并调用DLL函数。这个过程虽然复杂,但是一旦熟悉了,就能灵活地在Java和本地代码之间建立桥梁,充分利用两者...

    java利用jnative调用DLL.txt

    ### Java通过JNative调用DLL的关键知识点 #### JNative简介 JNative是一个强大的Java库,允许Java应用程序直接调用本地动态链接库(DLL)或共享库。它为开发者提供了一个简单而灵活的方式来集成本地代码与Java环境...

    jnative框架调用dll动态库-简单demo(带dll文件).zip

    通过以上步骤,你已经掌握了使用jnative框架在Java中调用DLL动态库的基本方法。需要注意的是,实际应用中可能需要处理更复杂的类型转换、异常处理以及多线程问题。此外,jnative还提供了对C++对象和类的支持,允许更...

    JNA.jar-JNative.jar-dll创建-JAVA调用-VC调用

    `JNative.jar`包含了JNative的实现,`TestJNative.java`是使用JNative调用DLL的示例。 3. **VC++创建DLL**: `CreateDLL.dll`是由Visual C++(VC++)编译生成的动态链接库,通常包含了一些可供其他程序调用的函数...

    java调用DLL:JNative

    下面通过一个具体的例子来展示如何使用JNative框架调用DLL中的函数。 #### 示例场景 假设我们需要编写一个Java程序,该程序调用名为`TestAppSvr.dll`的DLL文件中的`TestConnect()`函数来检测某个应用服务器的状态...

    JAVA调用DLL方法 JAVA调用DLL方

    下面我们将通过一个具体的例子来展示如何使用JNative来调用DLL中的方法。 #### 准备工作 1. **下载并配置JNative:** - 获取JNative的三个核心文件:`JNativeCpp.dll`(Windows平台)、`libJNativeCpp.so`(Linux...

    Java调用DLL的工具 JNative

    JNative的核心思想是通过Java接口来调用DLL中的函数,它提供了一种高级的抽象层,隐藏了JNI的底层细节。这样,开发者可以避免直接编写C语言的头文件和实现文件,减少了工作量和出错的可能性。 使用JNative的过程...

    jnative调用动态库

    标题中的“jnative调用动态库”指的是Java中使用JNative库来调用本地(操作系统级别的)动态链接库(DLL或SO文件)的技术。在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java ...

    Java调用DLL例子

    JNative是一个开源的Java库,它提供了一种方法使得Java程序能够直接调用C/C++编写的函数,从而间接实现了调用DLL的功能。JNative通过JNI(Java Native Interface)技术,为Java程序员提供了一个安全且灵活的方式来...

    java调用DLL文件

    6. **调用DLL函数**:现在你可以像调用Java方法一样调用DLL中的函数了。 ```java int result = dllProxy.myFunction(123, "example"); ``` 7. **处理结果**:根据DLL函数的返回值类型,适当地处理返回的结果。...

    YiKaTong.rar_JNative_YiKaTong.r_java jnative dll_jnative api_jna

    3. **yikatong.r.java**:这可能是项目中定义的Java源代码文件,包含了使用JNative调用DLL的Java类。在这个文件中,开发者会定义本地方法签名,然后通过JNative API来实现具体的调用。 4. **jnative.dll**:这是一...

    JNA.jar-JNative.jar-jinvoke.jar-dll创建-JAVA调用-VC调用

    `TestJNative.java`很可能是使用JNative调用DLL的示例代码。 `jinvoke.jar`是另一个相关的库,它可能提供了一种更简便的Java本地调用方式,简化了JNI的使用。`TestJInvoke.java`可能展示了如何使用jinvoke来调用`...

    java使用JNative调用动态连接库实例[文].pdf

    `JNative`是一个Java库,它允许我们直接在Java代码中调用DLL中的函数,实现了Java与本地代码的交互。以下是一个关于如何使用JNative调用DLL函数的实例,主要涉及到两个关键函数:`EncryptPswStr`和`DecryptPswStr`,...

    Java调用DLL源代码

    4. **调用函数**:现在你可以像调用Java方法一样调用DLL中的函数了。 示例代码: ```java public interface MyDLL extends Library { int add(int a, int b); } MyDLL dll = (MyDLL) Native.loadLibrary("mydll",...

    JAVA调用动态链接库DLL之JNative学习源码

    4. **加载和调用DLL**:在Java代码中,使用`System.loadLibrary`加载DLL,然后就可以像调用普通Java方法一样调用本地方法。 5. **测试与调试**:编写测试代码,如`EhfscliaxTest.exe`,检查调用DLL的功能是否正常。...

    JNative用java调用动态库VC++

    这个示例展示了如何使用JNative在Java中调用一个名为`InterfaceFun`的DLL,该DLL中有一个名为`AddZhiYe`的函数,接收多个参数,包括IP地址、用户名、密码和两个整数,并返回一个整数值。 总的来说,JNative提供了一...

    JAVA如何调用dll:用JNI调用C或C++动态联接库

    在上述代码中,`TestConnect`方法使用JNative的`setParameter`方法设置参数,并通过`invoke`方法调用DLL中的函数。注意,在调用完DLL后,确保释放资源,这里通过`n.close()`关闭JNative对象。 总结来说,调用C或C++...

    Java调用Labview生成的DLL文件

    1、Labview生成Dll文件 2、Java通过Jnative第三方Jar包调用Labview生成的DLL文件 3、Java在Windows系统调用Labview生成的Dll的说明 有JNative的使用说明 直接下载,根据使用说明可以直接使用。

    java调用dll必备jar包

    - **创建Java接口**:在Java代码中,声明一个本地方法,该方法会调用DLL中的函数。这些方法需要使用`native`关键字标识,并通过`JNIEXPORT`和` JNICALL`宏定义。 - **加载DLL**:使用JNative库提供的API,如`...

Global site tag (gtag.js) - Google Analytics