5

When installing a Rcpp package on Windows, you need to ensure that the package DLL is unloaded or you get a "Permission Denied" error when copying the new DLL. This means restarting R on every recompile, which is pretty annoying. Is there any way to unload the package DLL without killing R?

I've tried the detach("package:my_package", force=TRUE) command, but it doesnt unload the DLL.

Ilya Esteban
  • 85
  • 1
  • 7

3 Answers3

8

Opinions are divided on this. I often prefer to run the builds and test outside of my main R session(s), simply by chaining R CMD INSTALL with Rscript (or, on Linux, r calls from littler) to test the new build. If you use proper options to R CMD INSTALL ... to skip parts that may take extra time you get a quick turnaround AND are assured that you do get a fresh build.

And if you want the same behaviour by clicking a button, RStudio offers it too.

Dirk Eddelbuettel
  • 360,940
  • 56
  • 644
  • 725
5

I guess you need to run library.dynam.unload to unload DLLs.

wush978
  • 3,114
  • 2
  • 19
  • 23
5

If you want to do this in your main R session (without using RStudio, which makes reinstalling the package and reloading R very easy), you can use devtools:

library(devtools)
load_all("path/to/my/package")

Among other things, load_all will reload all your R code, and re-compile and reattach the DLL.

hadley
  • 102,019
  • 32
  • 183
  • 245