Re: linking to jni code

Andrew Haley <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.