您的位置:首页 > 运维架构 > Linux

windows和linux下,用jna调用C++库

2017-09-20 23:28 253 查看
C++库,在windows下为dll文件,linux下为so文件。

需要导入的jar:jna.jar

一、在windows下:

dll文件 放到和操作类相同的包下面(com.bm.reley)下面

package com.bm.reley;
import com.sun.jna.Library;
import com.sun.jna.Native;

public class JNATestDll {
public interface TestJnaLib extends Library
{
String filePath = TestJnaLib.class.getResource("").getPath().replaceFirst("/","").replaceAll("%20"," ")+"MyDLL.dll";
TestJnaLib INSTANCE = (TestJnaLib)Native.loadLibrary(filePath, TestJnaLib.class);

public int add(int x, int y);
public int lock();
public int unlock();

}
public static void main(String[] args) {

TestJnaLib jnaDemo=TestJnaLib.INSTANCE;
int c = jnaDemo.add(1, 4);
int b=jnaDemo.lock();//打开
System.out.println(c+"+"+b);
}
}


二、在linux下调用so

so文件直接可以放到工程目录下面

package myjava.jna.test;

import com.sun.jna.Library;
import com.sun.jna.Native;
public class HelloJna
{
//定义接口CLibrary,继承自com.sun.jna.Library
public interface CLibrary extends Library
{
//定义并初始化接口的静态变量
CLibrary Instance=(CLibrary)Native.loadLibrary("JNALibusb",CLibrary.class);

int lock();
int unlock();
}

public static void main(String[] args)
{
CLibrary cbLibrary=CLibrary.Instance;
int lock=cbLibrary.lock();
System.out.println(lock);
}
}


最后:我调用的是usbreley操作文件,链接为:

http://blog.csdn.net/shuihuaxiang/article/details/78046955
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: