java 调用dll之JNative(2)

JNative相比jni简单很多,需要下载JNative.jar,JNativeCpp.dll(windows),libJNativeCpp.so(linux)

将目标dll和JNativeCpp.dll 复制到Windows\System32下

	// 打开数据流句柄
	public static long openDataStream(byte[] lpszDiskRoot) throws NativeException,
			IllegalAccessException {
		JNative PegRoute = null;
		try {
			if (PegRoute == null) {
				// 1. 利用org.xvolks.jnative.JNative来加载DLL:参数1.PegRoute为类名
				// 2.HCTInitEx方法名
				PegRoute = new JNative("StreamData", "OpenDataStream");

				// 2.设置要调用方法中的参数:0 表示第一个以此类推

				Pointer a = new Pointer(
						MemoryBlockFactory.createMemoryBlock(4 * 10));
				a.setMemory(lpszDiskRoot);
				PegRoute.setParameter(0, a);

				// 3.设置返回参数的类型
				PegRoute.setRetVal(Type.INT);
				// 4.执行方法
				PegRoute.invoke();// 调用方法
			}
			System.out.println("调用的DLL文件名为:" + PegRoute.getDLLName());
			System.out.println("调用的方法名为:" + PegRoute.getFunctionName());
			// 5.返回值
			return Integer.parseInt(PegRoute.getRetVal());
		} finally {
			if (PegRoute != null) {
				// 6.释放系统资源
				PegRoute.dispose();
			}
		}
	}


你可能感兴趣的:(jnative)