Для приложения Android я реализовал внешнюю функцию в C, которую я хотел бы использовать в двух отдельных классах.
В первом классе (мой основной интерфейс Activity) я вызываю соответствующую loadLibrary:
System.loadLibrary(...);
В том же классе я определяю функцию как нативную:
public native int dissectPacket(byte[] header, byte[] data, int encap);
После этого я могу вызвать нативную функцию с без проблем в первом классе. Я не получаю сообщение об ошибке.
Теперь я хочу использовать эту функцию в другом классе. Я полагаю, мне не нужно загружать библиотеку снова. Во втором классе внизу я также определяю:
public native int dissectPacket(byte[] header, byte[] data, int encap);
Однако, когда я пытаюсь использовать встроенную функцию во втором классе, я получаю:
07-22 23:13:13.083: ERROR/AndroidRuntime(6737): Caused by: java.lang.UnsatisfiedLinkError: dissectPacket
Как правильно использовать функцию в обоих классах? Если я не переопределяю функцию как нативную во втором классе (называемую Packet ), я получаю ошибку:
The method dissectPacket(byte[], byte[], int) is undefined for the type Packet
Кстати, я НЕ хочу использовать: class1.dissectPacket (...); Я пытаюсь избежать прохождения класса.