SOLVED RE: [Rd] Problems compiling C code on windows

Victor Trevino virctoalgn at gmail.com
Wed Apr 27 16:53:41 CEST 2005


Thanks all replies,

I followed your advice. From readme.package I installed Rtools and Mingw,
set them in front of my path and now everything is running.

Thanks very much!


> -----Original Message-----
> From: Uwe Ligges [mailto:ligges at statistik.uni-dortmund.de]
> Sent: 27 April 2005 14:59
> To: Victor Trevino
> Cc: r-devel at stat.math.ethz.ch
> Subject: Re: [Rd] Problems compiling C code on windows
> 
> Victor Trevino wrote:
> 
> > Hi all,
> >
> >
> >
> > I can't get my C routines running on a windows box. I have no problems
> at
> > all in Linux.
> >
> >
> >
> > On windows, I have installed cygwin and the compilation works well but
> once
> > I execute "dyn.load(.)" it hangs whatever I use C/C++ interfaces.
> 
> 
> cygwin is not supported. Please read the manuals on how to set upo a
> working environment under Windows.
> 
> Uwe Ligges
> 
> 
> 
> >
> >
> > In Linux it works wonderful but I need to get this code running on
> windows
> > boxes.
> >
> > I know that the problem should be something with the dll
> generation/linkage
> > in windows but I can't figure out.
> >
> >
> >
> > As a matter of test I did the following C code:
> >
> >
> >
> > #include <R.h>
> >
> > #include <Rinternals.h>
> >
> > SEXP thisisatest(SEXP);
> >
> > SEXP thisisatest(SEXP a)
> >
> > {
> >
> >             long int i;
> >
> >             if (!isReal(a)) printf("Vector should be double.\n");
> >
> >             for (i=LENGTH(a)-1; i >=0; i--) {
> >
> >                         REAL(a)[i] = REAL(a)[i] + 1;
> >
> >             }
> >
> >             return (a);
> >
> > }
> >
> >
> >
> >
> >
> >
> >
> > Linux output:
> >
> > R CMD SHLIB thisisthetest.c
> >
> > gcc -I/usr/lib/R/include  -I/usr/local/include -D__NO_MATH_INLINES -
> mieee-fp
> > -fPIC  -O2 -g -pipe -march=i386 -mcpu=i686 -c thisisthetest.c -o
> > thisisthetest.o
> >
> > g++ -shared -L/usr/local/lib -o thisisthetest.so thisisthetest.o
> >
> >
> >
> > In R:
> >
> >
> >>dyn.load("thisisthetest.so")
> >
> >
> >>.Call("thisisatest",5)
> >
> >
> > [1] 6
> >
> >
> >
> > [[ WONDERFUL ]]
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Windows output:
> >
> > L:\R>Rcmd SHLIB thisisthetest.c
> >
> > making thisisthetest.d from thisisthetest.c
> >
> > gcc   -IC:/PROGRA~1/R/rw2001/include -Wall -O2   -c thisisthetest.c -o
> > thisisthetest.o
> >
> > ar cr thisisthetest.a thisisthetest.o
> >
> > ranlib thisisthetest.a
> >
> > gcc  --shared -s  -o thisisthetest.dll thisisthetest.def thisisthetest.a
> > -LC:/PROGRA~1/R/rw2001/src/gnuwin32  -lg2c -lR
> >
> >
> >
> > In R:
> >
> >
> >>dyn.load("thisisthetest.dll")
> >
> >
> >  [[ IT HANGS ]]
> >
> >
> >
> >
> >
> >
> >
> > I have tried different combinations in paths (for library search) and
> > compiling inside cygwin. no success.
> >
> >
> >
> > Any comments are very very very welcome.
> >
> >
> >
> >
> >
> > Thanks !
> >
> >
> >
> >
> >
> >
> > 	[[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-devel at stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list