[Rcpp-devel] RInside under Windows
patrick at burns-stat.com
Tue Feb 14 21:04:25 CET 2012
Obviously I don't *really* know what I'm
doing, or even *sort of* know what I'm
doing. But that never stopped me before.
Here is hopefully enough breadcrumbs to
help someone, or even all of us.
I've reinstalled RInside so that I am
starting with the original Makefile.win
*) There is an extraneous "n" on the first
line (first character) of Makefile.win -- 'make'
doesn't like that.
*) I need to comment out the command setting
R_HOME and set it in DOS instead.
*) The next problem is two instances each of:
there is no package called [Rcpp, RInside]
This is because .libPaths() is only finding
the main library and not the one where the
installed packages go.
This is diagnosed by adding a line to Makefile.win:
Rlibpaths := $(shell echo '.libPaths()' | $(R_HOME)/bin/R $(R_ARCH)
Adding a line to the checkR task:
And then doing:
make checkR -f Makefile.win
This is the same in 32-bit and 64-bit.
This problem can be remedied by setting the
R_LIBS_USER environment variable. You can
see what that is with the R command:
*) Now there is some progress, but not much.
And gets an error on rinside_sample1:
reopening rinside_sample1.exe: Permission denied
However the three that did compile don't run. They
all have the error message:
The program can't start because R.dll is missing from
your computer. Try reinstalling the program to fix
This is using Rtools2.14 and R 2.14.1 with
On 14/02/2012 17:53, Dirk Eddelbuettel wrote:
> Hi Pat,
> On 14 February 2012 at 17:43, Patrick Burns wrote:
> | Good point about the Rtools version. I started
> | with 2.13, but I get the same thing with 2.14.
> | Here are the key changes that I made to Makefile.win:
> | RCPPINCL := -IC:/Users/pat/Documents/R/win-library/2.14/Rcpp/include
> | RCPPLIBS :=
> | C:/Users/pat/Documents/R/win-library/2.14/Rcpp/libs/i386/Rcpp.dll
> | RINSIDEINCL := -IC:/Users/pat/Documents/R/win-library/2.14/RInside/include
> | RINSIDELIBS :=
> | C:/Users/pat/Documents/R/win-library/2.14/RInside/libs/i386/libRInside.dll
> That's not quite right, is it? What do (quoting from examples/standard/Makefile.win)
> these do:
> ## include headers and libraries for RInside embedding classes
> RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
> RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
> | I then do:
> | make -f Makefile.win
> | I seem to have failed in my attempt to
> | tell it where R lives -- I get a cygwin
> | warning about MS-DOS style path, but I
> | don't think that is really a problem.
> R_HOME must be defined. You can get it from R, or hardcode it.
> The single best start is to try
> cd examples/standard
> make -f Makefile.win
> which should create 10+ executable. And you can borrow freely from that
> Makefile.win which should work.
> Lastly, the Cygwin thing is line noise which you can suppress by setting an
> env var appropriately. This comes from the newer Rtools.
> | It then attempts the g++ command, gives
> | the multiple definition statements, and:
> Linking is still wrong then.
patrick at burns-stat.com
More information about the Rcpp-devel