gcj: issue with run time library loading

David Daney ddaney@caviumnetworks.com
Thu May 21 15:40:00 GMT 2009


Vaijayanthi Mala Suresh wrote:
> Hi,
>> I am trying to use JNI calls using gcj.
>> Hello.java is the jave code having a native method.
>> gcj -c -fjni Hello.java -o MyApp.o
> gcjh Hello -o MyApp.h
> ar -rcs libHello.a MyApp.o
>> Hello.c contains the native code implementation
> gcjh -jni Hello
> g++ -c Hello.c
> ar rcs libNative.a Hello.o
>>> I have a test.cpp where I have initialized the JVM and I am trying to
> invoke a method in the Java code which inturn invokes the native
> method. I have linked the above libraries along with test.o
>> I am getting the following error
>> Unhandled Java exception:
> java.lang.UnsatisfiedLinkError: natPrint
> <<No stacktrace available>>
>> Can anyone help me to resolve this problem.
>
JNI under gcj is just like JNI under Sun/OpenJDK. The JNI library must 
be compiled as a shared object.
Something like this:
g++ -fPIC -c Hello.c
g++ -shared -o Hello.so Hello.o
Then of course you need to use java.lang.System.loadLibrary() to load 
the library before calling any methods in it.
You will note that these are the *exact* same steps you would take if 
you were to use the library on Sun's JDK. You wouldn't even have to 
recompile the library.
David Daney


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /