Hello ALL! I am an Linux user (Debian testing i386), with very dusty Win-experience. Nevertheless, my colleagues and I are making some package in R, and I built C-routines to speed up things. I followed instruction how to compile C for R (very useful link: http://www.stat.lsa.umich.edu/~yizwang/software/maxLinear/noteonR.html, and links listed there). Everything works like a charm in Linux. I have *.so and wrapper function from R is doing a right call. However, I wanted to make *.dll library for Win-users. Now, I used my colleague's computer with Win XP on it, and with the latest R. In MS-DOS console, I positioned prompt in 'C;\Program Files\R\R-2.13.0\bin\i386\', and then I run: 'R CMD SHLIB C:\trial.c'. However, nothing happened, no trial.dll, nothing. Then, I tried with: 'R CMD SHLIB --output=trial.dll C:\trial.c', but no luck, again. Please, can anyone help me with this? Can I use: 'R CMD SHLIB --output=trial.dll C:\trial.c' under Linux, and expecting working DLL? Best, PM
You could use cygwin's cc/gcc, or the Watcom opensource compiler. [Watcom used to be a commercial compiler which ceased and has become an open project]. But listen to people who've experienced the options. [Not I]. Cheers, Tom. ----- Original Message ----- From: Petar Milin To: R-HELP Sent: Tuesday, May 31, 2011 9:43 PM Subject: [R] Compiling C-code in Windows Hello ALL! I am an Linux user (Debian testing i386), with very dusty Win-experience. Nevertheless, my colleagues and I are making some package in R, and I built C-routines to speed up things. I followed instruction how to compile C for R (very useful link: http://www.stat.lsa.umich.edu/~yizwang/software/maxLinear/noteonR.html, and links listed there). Everything works like a charm in Linux. I have *.so and wrapper function from R is doing a right call. However, I wanted to make *.dll library for Win-users. Now, I used my colleague's computer with Win XP on it, and with the latest R. In MS-DOS console, I positioned prompt in 'C;\Program Files\R\R-2.13.0\bin\i386\', and then I run: 'R CMD SHLIB C:\trial.c'. However, nothing happened, no trial.dll, nothing. Then, I tried with: 'R CMD SHLIB --output=trial.dll C:\trial.c', but no luck, again. Please, can anyone help me with this? Can I use: 'R CMD SHLIB --output=trial.dll C:\trial.c' under Linux, and expecting working DLL? Best, PM ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. [[alternative HTML version deleted]]
On 31/05/2011 7:43 AM, Petar Milin wrote:> Hello ALL! > I am an Linux user (Debian testing i386), with very dusty > Win-experience. Nevertheless, my colleagues and I are making some > package in R, and I built C-routines to speed up things. > I followed instruction how to compile C for R (very useful link: > http://www.stat.lsa.umich.edu/~yizwang/software/maxLinear/noteonR.html,You should follow the instructions in the R Installation and Administration manual to set up the tools on your Windows system.> and links listed there). Everything works like a charm in Linux. I have > *.so and wrapper function from R is doing a right call. > However, I wanted to make *.dll library for Win-users. Now, I used my > colleague's computer with Win XP on it, and with the latest R. In MS-DOS > console, I positioned prompt in 'C;\Program Files\R\R-2.13.0\bin\i386\', > and then I run: 'R CMD SHLIB C:\trial.c'. However, nothing happened, no > trial.dll, nothing.Really nothing? Not even an error message? Then, I tried with: 'R CMD SHLIB --output=trial.dll> C:\trial.c', but no luck, again. > Please, can anyone help me with this? Can I use: 'R CMD SHLIB > --output=trial.dll C:\trial.c' under Linux, and expecting working DLL?I assume you mean "under Windows". I would normally use a forward slash, i.e. C:/trial.c; I don't remember if the R CMD code handles backslashes. (It might treat \t as a tab.) With that change, this should work. One piece of unsolicited advice: I would hardly ever use R CMD SHLIB. Just include the C code in a package, and this is handled automatically by R CMD INSTALL. You won't need the .First.lib if you have a useDynLib() statement in your NAMESPACE. Duncan Murdoch
Hi Petar, did you install the toolset (Rtools) for compiling code for R in windows? See http://cran.r-project.org/doc/manuals/R-admin.html#The-Windows-toolset and http://www.murdoch-sutherland.com/Rtools/> Please, can anyone help me with this? Can I use: 'R CMD SHLIB > --output=trial.dll C:\trial.c' under Linux, and expecting working DLL? >Of course not, because Windows and Linux libraries differ by more than the filename extension. Once everything is set up, compiling in windows is pretty easy thanks to the toolset. Good luck, Andreas -- Andreas Borg Medizinische Informatik UNIVERSIT?TSMEDIZIN der Johannes Gutenberg-Universit?t Institut f?r Medizinische Biometrie, Epidemiologie und Informatik Obere Zahlbacher Stra?e 69, 55131 Mainz www.imbei.uni-mainz.de Telefon +49 (0) 6131 175062 E-Mail: borg at imbei.uni-mainz.de Diese E-Mail enth?lt vertrauliche und/oder rechtlich gesch?tzte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrt?mlich erhalten haben, informieren Sie bitte sofort den Absender und l?schen Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail und der darin enthaltenen Informationen ist nicht gestattet.