This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: linking to jni code
abhishek desai wrote:
> I am using the below command to compile a java program making calls to
> native functions implemented using JNI.
>
> gcj --main=MyApp -fjni MyApp.class MyApp.o -o MyApp
>
> Here MyApp.class is the class file generated from MyApp.java
> MyApp.o is the object file generated from MyApp.c implementing the JNI
> calls InitBase and PrintString.
>
> The command generated the executable but when executing it gives the
> following error.
>
> Exception in thread "main" java.lang.UnsatisfiedLinkError: InitBase
> at EpgApp.InitBase(MyApp)
> at EpgApp.main(MyApp)
>
> Looks like the MyApp.o file does not get linked into the application.
> Is there a way to get it linked into the Application statically?
You'll have to make sure there is a reference to it from somewhere in the
app. The easiest way is to define a symbol in the C code:
int FooBarBaz;
and then refer to it when building the app:
gcj -Wl,--undefined=FooBarBaz -c -fjni MyApp.class -o MyApp.o
Andrew.