[R] Link with C code
Richards, Tom
richards at pci.upmc.edu
Tue Jan 30 20:13:44 CET 2001
Thanks for the response, Professor Ripley. I have installed gcc 2.95.2-1,
the recommended compiler. Taking your advice, I made libR.a, and tried:
gcc -O2 -c doit.c -ID:\Rw1021\src\include
For me, gcc 2.95.2-1 was unable to find even string.h and stdio.h. I swear
that I downloaded and unzipped everything! Anyway, I then took advantage of
my earlier 2.95.2, and tried:
gcc -O2 -c doit.c -ID:\Rw1021\src\include
-ID:\gcc-2.95.2\i386-mingw32msvc\include
dlltool --export-all-symbols --output-def doit.def doit.o
gcc --shared -o doit.dll doit.def doit.o -LD:/Rw1021/src/gnuwin32 -lR
The first two lines work for me, but the third line causes complaints that
gcc can't find, for example, crtdll2.o and lmingw32. I am very puzzled, and
the 2.95.2-1 version is not packaged as nicely as 2.95.2 is. I am afraid
that I have not installed something properly.
I wonder whether anyone has any insight into what I'm missing here. Thanks.
Tom
> -----Original Message-----
> From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk]
> Sent: Tuesday, January 30, 2001 11:39 AM
> To: Richards, Tom
> Cc: r-help at stat.math.ethz.ch
> Subject: RE: [R] Link with C code
>
>
> On Tue, 30 Jan 2001, Richards, Tom wrote:
>
> > Hello:
> >
> > I need to ask a small question about the *recommended*
> compiler for
> > Windows, mingw32 gcc 2.95.2.
>
> Actually, it is gcc 2.95.2-1, and the -1 is important.
>
> > Suppose that I have a file called doit.c, and
> > a file doit.def which specifies that the function foo() be
> exported. I need
> > to link against Rdll.lib, to make doit.dll, which I want to
> load into R
> > 1.2.1. What are the correct mingw32 commands to do this?
> After playing
> > with gcc, dlltools, dllwrap, and S Programming for some
> time, all I have
> > come up with is
> >
> > gcc -O2 -c doit.c -ID:\Rw1021\src\include
> > dlltool -e doit.exp -l doit.lib --export-all-symbols doit.o
> > gcc doit.o doit.exp D:\Rw1021\bin\Rdll.lib -o doit.dll
>
> (Don't know where you got that last line from, but not S
> Programming for
> sure.)
>
> > The first line works perfectly, thanks to Sprog, but I
> cannot get the
> > compiler to find Rdll.lib. Every time I run the script
> above, I get the
> > same mesage that VC++ 6.0 gives when I fail to link against
> Rdll.lib. Can
> > anyone help? thanks in advance.
>
> You link against libR.a, not Rdll.lib. The makefiles will do
> all this for
> you, but you could just run (once) in src/gnuwin32
>
> dlltool --dllname R.dll --def R.exp --output-lib libR.a
>
> Then
>
> gcc -O2 -c doit.c -ID:\Rw1021\src\include
> <see below>
> gcc --shared -o doit.dll doit.def doit.o -LD:/Rw1021/src/gnuwin32 -lR
>
> You need to create doit.def. The Makefiles use nm and sed, but
>
> dlltool --export-all-symbols --output-def doit.def doit.o
>
> should do it.
>
> It really is easiest just to let the Makefiles take the strain or
> exactly follow a proven recipe.
>
> >
> > Tom Richards
> >
> >
> >
> > > -----Original Message-----
> > > From: Patrick Wendel [mailto:p.wendel at ic.ac.uk]
> > > Sent: Tuesday, January 30, 2001 8:05 AM
> > > To: r-help at stat.math.ethz.ch
> > > Subject: [R] Link with C code
> > >
> > >
> > >
> > >
> > > Hello,
> > >
> > > I am using cygwin (latest version) and I managed to generate
> > > a dll partly
> > > with rcmd shlib although there was a problem with both the
> > > resouce file (I
> > > had to remove "FILEOS VOS__WINDOWS32") and the command
> line for gcc
> > > (--shared is not supported for instance).
> > >
> > > So I would like to know which compiler/environment you advise
> > > to use for
> > > windows OS.
> > >
> > > Then I could load the library in R but couldn't call any method.
> > >
> > > Is there a function to know which functions have been
> > > successfully imported
> > > ?
> > >
> > > I've also done the dll in other ways (using gcc and dlltool
> > > as explained on
> > > their website and also using VC++) but I had the same result.
> > >
> > > I suppose I missed something in the dll creation but I cannot
> > > see what.
> > >
> > > Any idea ?
> > >
> > > Many thanks,
> > >
> > > Patrick Wendel
> > >
> > > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> > > -.-.-.-.-.-.-.-.-
> > > r-help mailing list -- Read
> > > http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> > > Send "info", "help", or "[un]subscribe"
> > > (in the "body", not the subject !) To:
> > > r-help-request at stat.math.ethz.ch
> > > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
> > > _._._._._._._._._
> > >
> >
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> -.-.-.-.-.-.-.-.-
> > r-help mailing list -- Read
> http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> > Send "info", "help", or "[un]subscribe"
> > (in the "body", not the subject !) To:
> r-help-request at stat.math.ethz.ch
> >
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
> _._._._._._._._._
> >
>
> --
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272860 (secr)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> -.-.-.-.-.-.-.-.-
> r-help mailing list -- Read
> http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To:
> r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
> _._._._._._._._._
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list