[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [igraph] Igraph with JNI
Re: [igraph] Igraph with JNI
Tue, 28 Jul 2009 23:31:58 +0200
Thunderbird 126.96.36.199 (Windows/20090605)
-----BEGIN PGP SIGNED MESSAGE-----
Hi Tamas, Gabor, Gang, (all),
First: I'd be interested in getting igraph linked to java. I know little
about this. But a few weeks ago I saw Daniel Adler's talk at user2009:
see also: http://dyncall.org/documentation.shtml
In general, if I understand this, his solution would make it a lot
easier to work out the type conversion.
The presentation mentions dynamic languages, but I don't see why JNI
would not be possible.
Tamas Nepusz wrote:
> Hi Gang,
>> I am thinking about trying to bridge igraph with JAVA via JNI on
>> windows. The way how JNI works is to link Java via JNI to native C
>> functions. The C source is complied to a shared library DLL file.
>> Does anyone have worked on this before?
> Yes, I tried it once, but only as a proof-of-concept, so I pretty much
> abandoned the project after I convinced myself that igraph could be used
> from Java using JNI had someone took the effort to develop a proper
> interface. So yes, it's pretty much doable, but not straightforward at
> all. The reason is twofold: first, using JNI means that you have to
> write a lot of "glue code" between igraph and Java (pretty much all
> igraph data types must have a Java counterpart and you have to write the
> conversion code in C); second, there are some calling conventions in
> igraph that cannot be easily reproduced in Java (i.e., functions using
> additional arguments to _return_ results). I started adapting the
> interface generator we use to build the R interface to be able to
> generate C glue code for the Java interface, but it's very far from
> being finished.
>> where the The directory after the -I switch is the one containing the
>> igraph.h file, while the one following -L should contain the library
>> file itself, usually a file called libigraph.so, libigraph.a or
>> Where actually I can find this igraph.dll in the igraph R package.
> I don't know for sure (that's Gábor's part), but I guess nowhere. The
> thing is that there are two ways to include igraph in your project:
> static linking (in which case you don't need the igraph DLL as
> everything that's in the DLL is built directly into your application) or
> dynamic linking (where you need the DLL as your app contains only
> references to igraph calls). I think the R interface is built
> statically, so you won't find a DLL there. JNI only supports dynamic
> linking, so you need the DLL. To build the DLL, you have to build the
> library from the C source code either in Visual Studio or in MSYS.
>> So my question is if I compile a c file using igraph librarys, and it
>> can be compiled successfully, will it be able to run standalone?
> If you link it statically, it will work. If you link it dynamically, it
> will require the DLL. See the corresponding Wikipedia entries as a
> starting point:
Jose Quesada, PhD.
Max Planck Institute,
Center for Adaptive Behavior and Cognition -ABC-,
Lentzeallee 94, office 224, 14195 Berlin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
-----END PGP SIGNATURE-----
Re: [igraph] Igraph with JNI, Gang Su, 2009/07/28
Re: [igraph] Igraph with JNI,
Jose Quesada <=
Re: [igraph] Igraph with JNI, Gábor Csárdi, 2009/07/28