[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 22:26:53 +0200
On Tue, Jul 28, 2009 at 10:15 PM, Gang Su<address@hidden> wrote:
> And Tamas,
> There's an igraph.dll in the R package,
Believe me, this dll is _useless_ for you.
> i tried to build the tutorial
> program using visual studio express commandline compiler cl, and it doesn't
> work. I got LINK1107 Error. After some research I found that under windows,
> when a dll file is built, a lib file is also presented. So when compiling,
> the link should link to igraph.lib instead of igraph.dll.
Download the zip file I mentioned in the previous email, build igraph,
and then try to build the small example program that is included in
the zip file.
> I do want to spend sometime on this. Even just port a few functions to java,
> this will at least provide some samples and tutorials for other people to
> begin with.
> Thank you very much!
> Quoting Tamas Nepusz <address@hidden>:
>> 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 igraph.dll
>>> 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
> Gang Su
> PhD student
> Bioinformatics training track
> Program in Biomedical Sciences
> University of Michigan, Ann Arbor
> MI, 48105, U.S.A.
> igraph-help mailing list
Gabor Csardi <address@hidden> UNIL DGM
Re: [igraph] Igraph with JNI, Gang Su, 2009/07/28
Re: [igraph] Igraph with JNI, Jose Quesada, 2009/07/28
Re: [igraph] Igraph with JNI, Gábor Csárdi, 2009/07/28
- Re: [igraph] Igraph with JNI,
Gábor Csárdi <=