JNI (Java - C++)

T

the.new.delboy

Hi,

I'm working on an application which requires some native calls to be
made from Java. The calls work fine in one version of my code. I need
to change the location of my native calls to a different file but when
I move them to another native file I receive the following error. I've
included all .h includes and path locations (LD_LIBRARY_PATH) and the
build script contains the libraries required to run.

The strange thing: I removed the problematic 'readFrame' method from my
native code and still receive the same error...

java.lang.UnsatisfiedLinkError:
/home/delboy/acemedia/var/osgi/fwdir/bs/9/jar0/librvacetoolbox.so:
/home/delboy/acemedia/var/osgi/fwdir/bs/9/jar0/librvacetoolbox.so:
undefined symbol: _Z9readFramei
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1660)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:993)

Could this be a case of mangled C++ symbols?

Any suggestions would be great,

Del
 
T

the.new.delboy

Hi Timothy,

Running ldd yields the following:

libAceToolboxBase.so.0 =>
/home/delboy/acemedia/lib/native/libAceToolboxBase.so.0 (0x00886000)
libCameraMotionEstimator.so.0 =>
/home/delboy/acemedia/lib/native/libCameraMotionEstimator.so.0
(0x003dc000)
libxil.so.1 => /home/delboy/acemedia/lib/native/libxil.so.1
(0x00111000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x001c8000)
libxerces-c.so =>
/home/delboy/acemedia/lib/native/libxerces-c.so (0x004ae000)
libMagick.so.5 =>
/home/delboy/acemedia/lib/native/libMagick.so.5 (0x006e4000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x002a7000)
libm.so.6 => /lib/tls/libm.so.6 (0x00372000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00395000)
libc.so.6 => /lib/tls/libc.so.6 (0x070f7000)
xiliUtils.so.2 =>
/home/delboy/acemedia/lib/native/xiliUtils.so.2 (0x0039d000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x003b0000)
libdl.so.2 => /lib/libdl.so.2 (0x003be000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x003c2000)
libtiff.so.3 => /usr/lib/libtiff.so.3 (0x003e5000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00432000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00450000)
libdpstk.so.1 => /usr/X11R6/lib/libdpstk.so.1 (0x003d4000)
libdps.so.1 => /usr/X11R6/lib/libdps.so.1 (0x061a0000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x0627d000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x00473000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x0047c000)
libbz2.so.1 => /usr/lib/libbz2.so.1 (0x00839000)
libz.so.1 => /usr/lib/libz.so.1 (0x0084a000)
/lib/ld-linux.so.2 (0x00497000)
 
T

Timothy Bendfelt

How about nm -C -u? Is it possible that you have a declared function that
is not defined. I've noticed that jni can be more picky on loading than
c++.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top