How do I compile a dll with R and RCPP?
I have written a .cpp file and I want to compile it to a .dll for use with R and RCPP. (without using the inline package). I am using WinXP and R 2.13.2 and RCPP 0开发者_如何学JAVA.9.7. I am using Rtools 2.14.
How do I include Rcpp.h in minGW's search path? I underastand that the files that I need to include are in C:\Program Files\R\R-2.13.2\library\Rcpp\include. However, I was not able to add the to "add" them to "search path".
I tired a temporary "hack". I copied the contents of C:\Program Files\R\R-2.13.2\library\Rcpp\include into minGW's include directory. The compiling/linking process gets from myfile.cpp to myfile.o but throws a bunch of errors before it can compile myfile.dll.
I have added C:\Program Files\R\R-2.13.2\bin\i386 to my PATH and I am calling R CMB SHLIB myfile.cpp from the WinXP command prompt.
What should I be doing?
A couple of quick points:
The
gccandg++compilers from MinGW behave just like other compilers from thegccfamily. That means there is no 'add to search path': you use the-I/some/dirswitch to add that path and directory. Similarly,-L/some/libadds that directory to the linker path.You really want to use a
Makefile. Our Rcpp packages comes with lots of examples; you could look at theMakefilein theConvolveBenchmarksdirectory.But what you really want is to use so-called "package". We have an entire vignette Rcpp-package devoted to this. It can be as simple as calling the
rcpp.package.skeleton()function which creates the package for you---and the dynamic library gets created as a side-effect.If all this is too confusing, try getting familiar with inline first. Use the
verbose=TRUEargument to see how inline builds the dynamic library!Lastly, we spell it Rcpp, not RCPP.
The rcpp-devel mailing list is a good source of help too.
加载中,请稍侯......
精彩评论