Код: Выделить всё
// export GetDetails
func GetDetails() (unsafe.Pointer, unsafe.Pointer, *C.char, *C.char) {
...
return C.CBytes(arr1), C.CBytes(arr2), C.CString(str1), C.CString(error)
}
Код: Выделить всё
public class MyLib {
static {
try {
System.loadLibrary("mydetails");
} catch (Exception e) {
...
}
}
public native GoResult GetDetails();
}
public class GoResult extends Structure implements Structure.ByValue {
public GoResult() {
}
public Pointer p1;
public Pointer p2;
public String str;
public String error;
protected List getFieldOrder() {
return Arrays.asList("p1", "p2", "str", "error");
}
}
< /code>
Это вызывается классом действий как: < /p>
public class Action {
MyLib INSTANCE = new MyLib();
GoResult result = INSTANCE.GetDetails();
}
.goresult .mylib.getDetails () . Похоже, что он не может составить карту Goresult to (uncefe.pointer, uncafe.pointer, *c.char, *c.char) , но я не уверен, что будет лучшим способом его исправить.
, когда я пытаюсь загрузить библиотеку, используя интерфейс библиотеки:
Код: Выделить всё
public interface MyLib extends Library {
MyLib INSTANCE = Native.load("mydetails", MyLib.class);
GoResult GetDetails();
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... eturn-type