我有一個C++函數:JNA直接調用不與論證結構工作[]
struct Result {
//...
};
bool doSomething(Result[]);
如果我用下面的JNA綁定,函數調用正常工作:
public class Result extends Structure {
//...
}
public interface CPPLibrary extends Library {
public static final CPPLibrary INSTANCE = (CPPLibrary)Native.loadLibrary("dllname");
boolean doSomething(Result[]);
}
但隨着直接撥打,我打了IllegalArgumentException說class [Lcom.usta.Result;不是支持的參數類型(在com.usta.CPPLibrary類的方法calcPV01中)。對於直接調用映射我JNA代碼:
public class CPPLibrary implements Library {
Native.register("dllname");
public static native boolean doSomething(Result[]);
}
我可以在com.sun.jna.Function#convertArgument(見)明確處理結構[]但com.sun.jna.Native #getConversion(),由直接調用映射使用,不處理結構[]。