This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]