Can Rcpp package DLLs be unloaded without restarting R?

家住魔仙堡 提交于 2019-12-07 05:59:15

问题


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.


回答1:


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.




回答2:


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.




回答3:


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



来源:https://stackoverflow.com/questions/14514672/can-rcpp-package-dlls-be-unloaded-without-restarting-r

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!