栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-15

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-15

java 用jna调用dll,报错,main方法调用好用,其他方法调用不好用

当java 用jna调用dll,报错,main方法调用好用,其他方法调用不好用,是因为把下面的接口类和具体方法放在了一起,应该把他分开,接口单放一个接口文件,否则生成class文件时,接口文件名称会有问题,导致只有main方法调用成功,因为主方法是直接调用的,而不是通过class调用

	public interface libVtExtAPI extends Library {
		
		libVtExtAPI INSTANCE = (libVtExtAPI) Native.loadLibrary("VtExtAPI64", libVtExtAPI.class);
		
		int VtExtCode (byte[] codeBuff);	
		int VtExtInit (String licPath, int logType);
		int VtExtInitWithServer(String ip, int port, String appid, String appkey, int logFlag);

		int VtExtIsCrypt(String path, Object isEnc);
		int VtExtEncryptFile(String src, String dest, int cryptMode, int domain);
		int VtExtDecryptFile(String src, String dest);
		int VtExtGetCryptFileDomain(String path, Object domain);
		int VtExtOutsidePack(String config, int length);
	}
	
	
	public static int VtExtCode (byte[] code) 
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtCode(code);
		if (sdkReslut == 0) 
		{
			String res = new String(code);  
			System.out.println(res);
		} 
		else 
		{
			System.out.println("VtExtCode Error: "+ sdkReslut);
		}
		return sdkReslut;
	} 
	
	public static int VtExtInit(String licensePath, int logFlag) 
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtInit(licensePath, logFlag);
		if (sdkReslut == 0) {
			System.out.println("激活成功");
		} else {
		    System.out.println("VtExtInit Error: "+ sdkReslut);
		}
		return sdkReslut;
	}

	
	public static int VtExtInitWithServer(String ip, int port, String appid, String appkey, int logFlag)
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtInitWithServer(ip, port, appid, appkey, logFlag);
		if (sdkReslut == 0) {
			System.out.println("激活成功");
		} else {
		    System.out.println("VtExtInitWithServer Error: "+ sdkReslut);
		}
		return sdkReslut;
	}

	
	public static int VtExtIsCrypt(String path, IntByReference isEnc)
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtIsCrypt(path, isEnc);
		if (sdkReslut == 0) {
			if (isEnc.getValue() == 0) {
				System.out.println("当前文件不是加密文件");
			}
			else{
				System.out.println("当前文件是加密文件");
			}	
		} else {
		    System.out.println("VtExtIsCrypt Error: "+ sdkReslut);
		}
		return sdkReslut;
	}

	public static int VtExtGetCryptFileDomain(String path, IntByReference domain)
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtGetCryptFileDomain(path, domain);
		if (sdkReslut == 0) {
			if (domain.getValue() == 0) {
				System.out.println("当前文件不是加密文件");
			}
			else{
				System.out.println("当前文件是加密文件");
			}	
		} else {
		    System.out.println("VtExtIsCrypt Error: "+ sdkReslut);
		}
		return sdkReslut;
	}

	
	public static int VtExtEncryptFile(String srcPath, String destPath, int cryptMode, int domain)
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtEncryptFile(srcPath, destPath, cryptMode, domain);
		if (sdkReslut == 0) {
			System.out.println("文件加密成功");
		} else {
		    System.out.println("VtExtEncryptFile Error: "+ sdkReslut);
		}
		return sdkReslut;
	}
	
	public static int VtExtDecryptFile(String srcPath, String destPath)
	{
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtDecryptFile(srcPath, destPath);
		if (sdkReslut == 0) {
			System.out.println("文件解密成功");
		} else {
		    System.out.println("VtExtDecryptFile Error: "+ sdkReslut);
		}
		return sdkReslut;
	}
	
	public static int VtExtOutsidePack() 
	{
		String outconfig = "{ "version":"1.0", "password":"",  "packToRes":false,  "limitReadOnly":false,  "limitPrint":false,  "limitOpen": {  "limitCount":9, "limitTime":true, "timeStart":"2019-4-1", "timeEnd":"2019-9-1"  },  "policyPath":"/home/wmk/test/cfg/policy.xml",  "resDir":"/home/wmk/test/res/", "tmpDir":"/home/wmk/test/tmp/",  "srcDir":"/home/wmk/test/src/", "dstDir":"/home/wmk/test/dst/",  "dstZipPath":"/home/wmk/test/package.zip", "allowOpenUsers":[ { "username":"a", "password":"e10adc3949ba59abbe56e057f20f883e"}, { "username":"b", "password":"c4ca4238a0b923820dcc509a6f75849b"} ] }";
		int configlen = outconfig.length();
		int sdkReslut = libVtExtAPI.INSTANCE.VtExtOutsidePack(outconfig, configlen);
		if (sdkReslut == 0) {
			System.out.println("外发文件制作成功");
		} else {
		    System.out.println("VtExtOutsidePack Error: "+ sdkReslut);
		}
		return sdkReslut;
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号