Неудовлетворенная линейкаJAVA

Программисты JAVA общаются здесь
Anonymous
Неудовлетворенная линейка

Сообщение Anonymous »

У меня есть метод GO, который возвращает 2 байтовых массивов и 2 строки, определенных как: < /p>

Код: Выделить всё

// 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)
}
Я составляю его в libmydetails.so и вызовите это с помощью кода Java, определяемого как:

Код: Выделить всё

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();
}
При выполнении этого, libmydetails.so успешно загружается, но я получаю эту ошибку, запуская нативный метод: java.lang.unsatisfiedlinkerror: '
.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();
}
Я могу запустить getDetails () локально, но моя служба требует, чтобы библиотека была загружена во время выполнения, так что System.LoadLibrary ("myDetails") работает во время ее работы через службу.

Подробнее здесь: https://stackoverflow.com/questions/795 ... eturn-type

Вернуться в «JAVA»