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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Hello: I need to ask a small question about the *recommended* compiler for Windows, mingw32 gcc 2.95.2. 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 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. 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Patrick, I have had good success using the lcc compiler (sorry - don't have a link handy). It comes with a fairly complete IDE called wedit. If you do a search for lcc-win32 you should find it. If you need any help putting the dll "project" together, don't hesitate to email me off list (or on if it would be helpful to others). Chris On Tue, 30 Jan 2001, Patrick Wendel wrote:> > > 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._