This isn't exactly answering your question, but have you considered
creating the R Swig wrapper. This may just simply work out of the box
(or indeed not!) with little effort.

- Noel

On 20 March 2013 16:13, Kevin Horan <kevinho...@globalrecordings.net> wrote:
>      I would like to make use of open babel from within the R language.
> Initially I just need to do some format conversions, but may expand the
> usage to other parts of OpenBabel as well. I am familiar with embedding
> C/C++ code in R, but I'm having some trouble with the plugin mechanism
> of OpenBabel in this case. The  problem is that the formats are not
> available when I run the OpenBabel code from within R. So, for example,
> if I search for the SDF format like so:
>      OBFormat *format = conv.FindFormat("SDF");
> I always get back a 0 value. The same chunk of code executed outside of
> R, as a normal stand-alone program, works fine. So does anyone know how
> I can ensure that the formats get loaded? Thanks.
>      One other thing to mention, someone might suggest linking against a
> static version of openbabel which includes all the plugins. I would like
> to avoid that if possible since this needs to work in an R package that
> will be distributed across platforms, so it would be hard to ask people
> to compile a special, static, version of openbabel just to compile this
> R package. Since it needs to work on windows, mac and linux, it would be
> nice  if I can make use of any existing installed shared obenbabel
> libraries. If it turns out it can't be done, then I'll go down that
> path. Thanks.
>
>      Here is an example of the problem:
>
> test program (obtest2.cc):
>
>     #include <iostream>
>     #include <openbabel/obconversion.h>
>     #include <R.h>
>     #include <Rinternals.h>
>
>     extern "C" {   SEXP test(); }
>
>     int main(){
>         test();
>     }
>     SEXP  test()
>     {
>         OpenBabel::OBConversion conv;
>         OpenBabel::OBFormat *format = conv.FindFormat("SDF");   //
>     search for SDF format
>         std::cout<<"format: "<<format<<std::endl;
>     // print out search result, either 0
>
>     // or an address
>         return R_NilValue;
>     }
>
>
> compile:
>      g++  -I/usr/include/openbabel-2.0 -I/usr/share/R/include -fpic -c
> obtest2.cc -o obtest2.o
>      g++ -o obtest2 obtest2.o -fpic  -lopenbabel
> -lR                       # Executable
>      g++ -shared -o libobtest2.so obtest2.o -fpic  -lopenbabel -lR  # R
> library
>
> Run executable:
>      $ ./obtest2
>      format: 0x7f1858275d20  #found some result, this is what I expect
>
> Run in R:
>      R>dyn.load("libobtest2.so")
>      R>.Call("test")
>          format: 0              # the format was not found, so 0 was
> returned
>          NULL
>
> Kevin
>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_mar
> _______________________________________________
> OpenBabel-Devel mailing list
> OpenBabel-Devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openbabel-devel

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
OpenBabel-Devel mailing list
OpenBabel-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbabel-devel

Reply via email to