CNI for C

Anthony Green green@redhat.com
Wed Apr 7 23:11:00 GMT 2004


On Wed, 2004年04月07日 at 14:24, Geert Bevin wrote:
> On Wed, 2004年04月07日 at 22:38, Michael Koch wrote:
> > > If it really is as little work as it sounds to be, by all means get
> > > it in there!!
> > 
> > It always needs people interested to do. If noone currently involved in 
> > GCJ is interested in doing it it will never be done. Geert, will you do 
> > a step forward and do it ?
>> I could have look at it. I have no knowledge of the inner workings of
> GCC at all and never even looked at how GCJ is constructed. Without some
> major guidance I doubt I'll be able to get this done.
> As far as GCC/GCJ is concerned I've just been a user :-/

I don't know how pinvoke works, but I was just reading about JDirect3,
which was in a previous version of Apple's JVM:
 import com.apple.mrj.jdirect.Linker;
 
 public class Prime {
 // The call to new Linker() installs the native methods
 static Object linkage = new Linker(Prime.class);
 
 // This string tells JDirect where to find the native code
 static final String JDirect_MacOSX = "prime.dylib";
 
 public static native long ComputePrime(short n);
 }
Calling ComputePrime forces the creation of Linker, which loads the
prim.dylib shared library and looks for the C function ComputePrime. 
So, there are a couple of tricks here (demangling, marshalling
arguments), but nothing too bad. This combined with static imports
would make a nice dynamic interface to C from Java.
AG
-- 
Anthony Green <green@redhat.com>
Red Hat, Inc.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /