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. 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]]
On Wed, 27 Apr 2005, Victor Trevino wrote:> 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.Please try reading the R-admin manual (in 2.1.0) and installing a Windows compiler instead. R does not have a Cygwin port: it does have a native Windows port. -- Brian D. Ripley, ripley@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 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
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@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel