newbie question: need help linking

Andrew Haley aph@redhat.com
Wed Dec 1 15:49:00 GMT 2004


Prabhakar, Vijay (IT) writes:
 > Hmm, what about a native method that's written as part of a Java class
 > that's compiled with gcj.  Can that be called from a .class file?

Yes.  You make it into a shared library.  See 

Extra features unique to gcj

   * When you compile your classes into a shared library they can be
     automatically loaded by the `libgcj' system classloader.  When
     trying to load a class `gnu.pkg.SomeClass' the system classloader
     will first try to load the shared library
     `lib-gnu-pkg-SomeClass.so', if that fails to load the class then
     it will try to load `lib-gnu-pkg.so' and finally when the class is
     still not loaded it will try to load `lib-gnu.so'.  Note that all
     `.'s will be transformed into `-'s and that searching for inner
     classes starts with their outermost outer class.  If the class
     cannot be found this way the system classloader tries to use the
     `libgcj' bytecode interpreter to load the class from the standard
     classpath.  This process can be controlled to some degree via the
     `gnu.gcj.runtime.VMClassLoader.library_control' property; see *Note
     libgcj Runtime Properties::.

 > I was thinking about writing a class for wrapping and unwrapping
 > primitives when communicating between C++ and Java.  In other
 > words, I was hoping to have a class converts RawData objects which
 > are actually arrays (or vectors/other STL datastructures) of C++
 > primitives and returns arrays of Java primitives.  Would I be
 > better off writing a C++ template that converts C++ primitives into
 > j<primitive> arrays so that it can communicate with the Java code?

I have no idea.  Depends on your application.

Andrew.



More information about the Java mailing list