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!");
}
}