java创建两个foo方法_java – 如何使用JNA创建同一个库的多个实例?

我有一个

Java Native Access的问题:我有一个带有一个函数的C库,让我们说foo().这个函数有一个内存 – 一个计数器 – 每次调用都会增加.是否可以在同一个java进程中创建此库的两个实例,以便计数器是独立的?

非常感谢你.

这是一些代码:

public class A

{

public static class Lib

{

NativeLibrary libInstance = NativeLibrary.getInstance("myLibrary");

Function fn = lib.getFunction("foo");

}

private Lib lib = new Lib();

public foo()

{

lib.fn.invoke(new Object[] {});

}

}

如果我打电话:

A a = new A();

A b = new A();

a.foo(); // >1

a.foo(); // >2

b.foo(); // >3

a.foo(); // >4

b.foo(); // >5

a.foo(); // >6

但我想让a和b独立于图书馆工作:

a.foo(); // >1

a.foo(); // >2

b.foo(); // >1

a.foo(); // >3

b.foo(); // >2

a.foo(); // >4

非常感谢

这是我尝试创建lib实例的方法:

public class DriverLib

{

private static int counter = 1;

NativeLibrary lib;

Function stepAction;

Function initialize;

Function terminate;

Pointer input;

Pointer output;

public DriverLib()

{

// create options

HashMap options = new HashMap<>();

options.put(Library.OPTION_OPEN_FLAGS, new Integer(counter++));

lib = NativeLibrary.getInstance("mylib_win64", options);

stepAction = lib.getFunction("step");

initialize = lib.getFunction("initialize");

terminate = lib.getFunction("terminate");

input = lib.getGlobalVariableAddress("model_U");

output = lib.getGlobalVariableAddress("model_Y");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值