使用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 加载红外图像成功
相关推荐
NULL 博文链接:https://unifocus.iteye.com/blog/678463
一个简单的jnative调用dll例子,因为网上找到java的都不包含dll代码,所以自己研究弄了个简单例子
java利用jnative调用DLL.txt
jnative框架调用dll动态库-简单demo(带dll文件)
包含jna.jar,JNative.jar,VC++创建DLL例子,VC++调用DLL例子,JAVA-JNA、JNative调用DLL例子
JAVA使用JNative包调用DLL文件
是Java 调用DLL动态库框架,功能强大,告别往日的JNI,只需定义接口,就可以方便调用DLL库,为开发人员省了不少事。
因为项目的需求,要在JAVA项目中调用Windows的Dll,之前用Jni调用过C写的Dll文件,比较麻烦,后在网上找到一个开源的组件JNative,使用后感觉比较方便。
1、Labview生成Dll文件 2、Java通过Jnative第三方Jar包调用Labview生成的DLL文件 3、Java在Windows系统调用Labview生成的Dll的说明 有JNative的使用说明 直接下载,根据使用说明可以直接使用。
Jnative调用DLL进行开发的具体代码
因工作的缘故,有机会接触了Java本地方法调用(JNI)。本文中记下了初试JNI的过程和一点点体会。 使用Java的JNI调用C/C++的动态联结库有个固定的步骤,下面将以一个最简单的HelloWorld例子程序来说明调用过程。这个...
包含jna.jar,JNative.jar,jinvoke.jar,VC++创建DLL例子,VC++调用DLL例子,JAVA、JNA、JNative、jinvoke调用DLL例子
这是项目中用到的java掉用本地动态链接库(DLL)的一个例子,用了JNative Jar包
JNative.jar , JNativeCpp.dll ,libJNativeCpp.so,java通过JNative调用动态dll所需的文件jar
1、需要将JNativeCpp.dll和需要调用的dll放到C:\WINDOWS\system32目录下。 2、将JNative.jar放到项目下。 3、如果运行时还是提示找不到你调用的dll,那么将mscoree.dll也放到C:\WINDOWS\system32目录下并注册此dll。...
JAVA调用动态链接库DLL之JNative学习源码,详细请参考:http://blog.csdn.net/testcs_dn/article/details/26980027
jnative 1.3,1.4版本 外加java 调用c++ dll 案例 整体打包 案例可用 强调 jnative调用c++ 不够精准方法名会有偏移
java调用第三方dll心得,文档格式pdf
JNI,JNATIVE,JAWIN 使用Java调用DLL动态链接库的方案我知道的有四种:JNI,Jnative,Jawin,Jacob
一个用于在java中调用dll动态代码库的开源组件,JNative-1.3.2