我在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; } }
您需要为每个函数指针声明回调。这里有一个“重置”的例子。
public class BasicHash extends Structure { public interface Reset extends Callback { public void invoke(); } public Reset reset; public BasicHash() { } public BasicHash(Pointer p) { super(p); read(); } } BasicHash hash = mylib.getAlgorithmInstance(0); hash.reset.invoke();