ruipbarradas at sapo.pt
2011-Dec-12 13:12 UTC
[Rd] Problems in building a DLL in 64-bit Windows
I am trying to build a C language DLL and it works well with i386 but when I compile with it substituted by x64, like the FAQ page says, the result is an error message: C:/PROGRA~1/R/R-214~1.0/bin/x64/R.ddl: file not recognized : File format not recognized collect2: ld returned 1 exit status How can I solve this? The problem is with R 2-14.0 and 2-13.0 The complete source code is /* * myfun.c */ #include <stdio.h> #include <R.h> #include <Rinternals.h> #include <R_ext/Rdynload.h> void myfn(double *x){ *x += 1; } The DLL is build like this: R CMD SHLIB -LC:/PROGRA~1/R/R-214~1.0/bin/x64 -lR myfun.c -o myfun64.dll and get the error message above. The R code: # # myfun.R: this works with i386, but not with x64 # dyn.load("myfun64.dll") f <- function(x) {.C("myfn", x=as.double(x))$x} f(1) f(1000) dyn.unload("dllmain.dll") I am trying to build a package, or at least a set of functions, and performance is sometimes a problem. Thank you, Rui Barradas [[alternative HTML version deleted]]
What is R.ddl? Or is that not the actual output? In any case, it isn't going to work unless you run 64-bit 'R', and my guess is that you used 32-bit 'R' to do this. Make sure you use ..../bin/x64/R CMD and you do not need the -L.... On Mon, 12 Dec 2011, ruipbarradas at sapo.pt wrote:> > I am trying to build a C language DLL and it works well with i386 but when I compile with it substituted > by x64, like the FAQ page says, the result is an error message:which 'FAQ page' (which FAQ, which page ...)?> C:/PROGRA~1/R/R-214~1.0/bin/x64/R.ddl: file not recognized : File format not recognized > collect2: ld returned 1 exit status > > How can I solve this? The problem is with R 2-14.0 and 2-13.0 > > The complete source code is > > /* > * myfun.c > */ > #include <stdio.h> > #include <R.h> > #include <Rinternals.h> > #include <R_ext/Rdynload.h> > > void myfn(double *x){ *x += 1; } > > The DLL is build like this: > > R CMD SHLIB -LC:/PROGRA~1/R/R-214~1.0/bin/x64 -lR myfun.c -o myfun64.dll > > and get the error message above. > > The R code: > > # > # myfun.R: this works with i386, but not with x64 > # > dyn.load("myfun64.dll") > f <- function(x) {.C("myfn", x=as.double(x))$x} > f(1) > f(1000) > dyn.unload("dllmain.dll") > > I am trying to build a package, or at least a set of functions, and performance is sometimes a problem. > Thank you, > > Rui Barradas > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- 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 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
On 12.12.2011 14:12, ruipbarradas at sapo.pt wrote:> > I am trying to build a C language DLL and it works well with i386 but when I compile with it substituted > by x64, like the FAQ page says, the result is an error message: > > C:/PROGRA~1/R/R-214~1.0/bin/x64/R.ddl:What is R.ddl? Do you mean R.dll? If this is a typo: Is your OS 64 bit? Have you used the right compiler collection for making 64-bit code according to the manual? Best, Uwe Ligges file not recognized : File format not recognized> collect2: ld returned 1 exit status > > How can I solve this? The problem is with R 2-14.0 and 2-13.0 > > The complete source code is > > /* > * myfun.c > */ > #include<stdio.h> > #include<R.h> > #include<Rinternals.h> > #include<R_ext/Rdynload.h> > > void myfn(double *x){ *x += 1; } > > The DLL is build like this: > > R CMD SHLIB -LC:/PROGRA~1/R/R-214~1.0/bin/x64 -lR myfun.c -o myfun64.dll > > and get the error message above. > > The R code: > > # > # myfun.R: this works with i386, but not with x64 > # > dyn.load("myfun64.dll") > f<- function(x) {.C("myfn", x=as.double(x))$x} > f(1) > f(1000) > dyn.unload("dllmain.dll") > > I am trying to build a package, or at least a set of functions, and performance is sometimes a problem. > Thank you, > > Rui Barradas > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel