Dirk is once again correct. The "missing R.dll"
is a PATH problem.
One way of solving it is to add the path to the
R DLLs to the end of PATH. For instance adding:
C:\Program Files\R\R-2.14.1\bin\i386
Once I've arranged those DLLs to be visible, the
new problem is:
Fatal error: unable to open the base package
That seems like it might be a path problem as well
but I'm not seeing how to fix it.
Pat
On 14/02/2012 21:52, Dirk Eddelbuettel wrote:
On 14 February 2012 at 21:05, Patrick Burns wrote:
| On 14/02/2012 20:59, Dirk Eddelbuettel wrote:
|>
|> (resending with CC to list which I omitted a minute ago --Dirk)
|>
|> On 14 February 2012 at 20:47, Patrick Burns wrote:
|> |
|> |
|> | On 14/02/2012 20:14, Dirk Eddelbuettel wrote:
|> |>
|> |> On 14 February 2012 at 20:04, Patrick Burns wrote:
|> |> | 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 don't know for sure what your are talking about. A common fix would
be to
|> |> send a diff. Could you do that?
|> |
|> | This is Windows, remember -- perhaps there is a
|>
|> This is R, remember, and these tools come with Rtools by Duncan Murdoch.
|>
|> | way of doing a diff, I don't know it. But the
|> | start of Makefile.win that I see out of the box is:
|> |
|> | n## -*- mode: makefile; tab-width: 8; -*-
|> | ##
|> | ## Simple Makefile for Windows
|> |
|> | Note the bizarre first character.
|>
|> Got it. Was still present here. Sorry about that, and thanks for catching
it.
|>
|> Next release will fix, now corrected in SVN.
|>
|> |> | *) I need to comment out the command setting
|> |> | R_HOME and set it in DOS instead.
|> |>
|> |> Works for me in the Makefile.win
|> |>
|> |> | *) 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)
|> |>
|> |> I would recommend using ~/.Rprofile which strikes me as easier.
|> |>
|> |> | 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
|> |>
|> |> Can you run rinside_sample0.exe ?
|>
|> Does that run?
|
| There is the missing R.dll problem.
That is "just" a PATH problem. For now, copy this dll (and there will be
four or five more from R, and then possibly from Rcpp and RInside) into a
working (temp) directory and try.
Seeing "hello, world" is a good proof. The rest is setup issues, which on
Windows often descend into man-to-machine combat.
Dirk
|>
|> |> | And gets an error on rinside_sample1:
|> |> |
|> |> | reopening rinside_sample1.exe: Permission denied
|> |>
|> |> Huh?
|> |
|> | Agreed. That is the only indication of it
|> | being upset.
|> |
|> | But I renamed that file to try to make it do it last.
|> | Running it again there was no error -- everything
|> | compiled.
|> |
|> | Compiled for 32-bit.
|> |
|> | There is not an x64 subdirectory to 'lib' (as there is
|> | with 'libs') so nothing compiles.
|>
|> Are you talking about RInside or Rcpp? Did you install from source or via
|> the prebuilt CRAN binary?
|>
|> Everything from CRAN should now be multiarch, 32 and 64 bit.
|
| Prebuilt from CRAN. Rcpp is fine,
| RInside/lib/x64 went AWOL.
|
| Pat
|
|>
|> Dirk
|>
|> |> | 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.
|> |>
|> |> Could that be a Win7 security setting or something like it?
|> |
|> | That's an interesting idea. Anyone have
|> | ideas about testing it?
|> |
|> | Pat
|> |
|> |>
|> |> | This is using Rtools2.14 and R 2.14.1 with
|> |> | RInside_0.2.6 Rcpp_0.9.9
|> |>
|> |> I think I used the same combination with success.
|> |>
|> |> Dirk
|> |>
|> |>
|> |> | 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
|> |> | [email protected]
|> |> | http://www.burns-stat.com
|> |> | http://www.portfolioprobe.com/blog
|> |> | twitter: @portfolioprobe
|> |>
|> |
|> | --
|> | Patrick Burns
|> | [email protected]
|> | http://www.burns-stat.com
|> | http://www.portfolioprobe.com/blog
|> | twitter: @portfolioprobe
|>
|
| --
| Patrick Burns
| [email protected]
| http://www.burns-stat.com
| http://www.portfolioprobe.com/blog
| twitter: @portfolioprobe
--
Patrick Burns
[email protected]
http://www.burns-stat.com
http://www.portfolioprobe.com/blog
twitter: @portfolioprobe
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel