【发布时间】:2016-03-28 14:05:57
【问题描述】:
我在 dll 中有一个方法,它返回一个指向对象的指针
C 代码
basic_hash* getAlgorithmInstance( int algorithm )
对象有以下方法:
void reset ();
void hash (const byte* data, uint64 size, vector_byte& hash).
如何调用这个对象的方法?
我有一个返回指针的实现
java代码
public interface LIB extends Library {
LIB INSTANCE = (LIB ) Native.loadLibrary(
(Platform.isWindows() ? "LIB " : "linuxLIB"), LIB.class);
Pointer getAlgorithmInstance(int i);
}
public static void main(String[] args) {
try {
LIB lib = LIB.INSTANCE;
Pointer pointer = lib.getAlgorithmInstance(0);
//pointer.reset(); //TODO how call?
} catch (Exception e) {
e.printStackTrace();
return;
}
}
【问题讨论】:
-
C中没有“对象”之类的东西。您的函数很可能返回一个结构指针 (struct*)。向我们展示basic_hash的定义,并查找对Callback或“函数指针”的JNA 引用。 -
basic_hash - 它是下一个方法的接口:void reset ();无效部分(常量字节*数据,uint64大小); void finalize (vector_byte& hash); void hash (const byte* data, uint64 size, vector_byte& hash)。
标签: java pointers dll native jna