linux 环境 Java调用C++编写的动态链接库so 代码实现

1 篇文章 0 订阅

1:先导入Native 包,参考 ​ ​https://blog.51cto.com/u_15343661/4220382​

2:创建导入so的类文件,如下:

package testDLL;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
 
public interface LibTest extends Library {
	@SuppressWarnings("deprecation")
	LibTest INSTANCE = (LibTest) Native.loadLibrary("/usr/lib/dlltest.so", LibTest.class);
	 
 
	// 测试输出字符串
	int Outputstr(Pointer inStrPtr); 
}


3:调用so中函数,如下:
  
package testDLL;

import java.io.UnsupportedEncodingException;

import com.sun.jna.Memory; 
import com.sun.jna.Pointer; 

public class TestMain {
	//字符串转指针
	public static Pointer getUtf8Pointer(String str){  
		try {
			byte[] data = str.getBytes("UTF-8");
			Pointer p = new Memory(data.length + 1);
			p.write(0, data, 0, data.length);
			p.setByte(data.length, (byte)0);
			return p;
		}catch (UnsupportedEncodingException e) {
        	return null;
        }
	}

	//
	public static void main(String[] args) {
		Pointer ptStr = getUtf8Pointer("多可文档管理系统"); 
		// 调用DLL方法
		LibTest.INSTANCE.Outputstr(ptStr); 
		// 
		System.out.println("over!");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值