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.