[ GORSHTAK @ 28.04.2014. 12:23 ] @
Zdravo svima, Imam 2 shared biblioteke: libmoja.so, koju ja pisem i libtudja.so, za koji nemam izvorni kod. libtudja.so treba da iskoristim u javi, pa zbog toga pisem "proxy" biblioteku libmoja.so libtudja.so sadrzi sledece funkcije: Code (c): int openConnection(); int closeConnection(); int requestData(); int getData(unsigned char* data, int* dataLen); kod za libmoja.so bi izgledala ovako: Code (c): #include "tudja.h" JNIEXPORT jint JNICALL Java_CallTudja_openConn (JNIEnv *e, jobject j) { return openConnection(); } JNIEXPORT jint JNICALL Java_CallTudja_closeConn (JNIEnv *e, jobject j) { return closeConnection(); } /// ......... ako bih libtudja.so koristio u c projektu, kompajlirao bih ovako: gcc -Wall -L. -ltudja -pthread -m32 -o gl glavni.c java kod mi izgleda ovako: Code (java): public class CallTudja { static { System.loadLibrary("tudja"); // nisam siguran da li mi treba ovde System.loadLibrary("moja"); } private native int openConn(); private native int closeConn(); // ..... public static void main(String[] args) { CallTudja hj = new CallTudja(); int com = hj.openConn(); // ....... hj.closeConn(); } } java projekat sam kompajlirao i izvrsio ovako: javac CallTudja.java javah -jni CallTudja gcc -I"$JAVA/include" -I"$JAVA/include/linux" -I. -shared -o libmoja.so moja.c -m32 -pthread $JAVA/bin/java -Djava.library.path=. CallTudja a rezultat je ovaj: Exception in thread "main" java.lang.UnsatisfiedLinkError: /mnt/data2/projekti/rucno/java/libmoja.so: /mnt/data2/projekti/rucno/java/libmoja.so: undefined symbol: openConnection at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880) at java.lang.Runtime.loadLibrary0(Runtime.java:849) at java.lang.System.loadLibrary(System.java:1088) at CallTudja.<clinit>(CallTudja.java:3) napomena: libtudja.so je uradjena za 32bitni OS i koristi thread, java koju koristim je takodje 32bitna jel ima neko ideju kako da ovo resim? |