[Rcpp-devel] RInside under Windows

Patrick Burns 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) 
--vanilla --slave)

Adding a line to the checkR task:

echo $(Rlibpaths)

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:

Sys.getenv('R_LIBS_USER')


*) Now there is some progress, but not much.

It compiles:
rinside_callbacks0
rinside_module_sample0
rinside_sample0

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 problem.

This is using Rtools2.14 and R 2.14.1 with
RInside_0.2.6 Rcpp_0.9.9

Pat

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.
>
> Dirk
>
>

-- 
Patrick Burns
patrick at burns-stat.com
http://www.burns-stat.com
http://www.portfolioprobe.com/blog
twitter: @portfolioprobe


More information about the Rcpp-devel mailing list