[英]Dynamic library not loading in R binary package build
我正在嘗試使用Windows環境中的“RStudio”和“devtools”在R
構建包含已編譯C
代碼的包。
只有一個函數使用src
文件夾中的C
代碼。 源包工作正常。 我可以使用所有功能。 我能夠使用devtools::document()
編譯C代碼,相應的.dll
和.o
文件也出現在src
文件夾中。 然后我可以使用dev_tools::load_all
或Ctrl+Shift+L
加載代碼並運行所有函數。
但是,當我使用Ctrl+Shift+B
構建和重新加載包時,我無法使用特定的功能。 即使文檔被保留,包中也缺少該函數。 我也得到錯誤告訴相應的.dll
沒有加載。
Error in library.dynam.unload(name, system.file(package = name)) :
DLL ‘mypackage.dll’ was not loaded
當我使用devtools::build
with binary=TRUE
時,我得到相同的結果。
但是,我可以在庫Documents\\R\\win-library\\3.0\\mypackage\\libs\\i386\\mypackage.dll
找到.dll
文件。 為什么編譯代碼中的動態庫沒有被加載?
PS:1) devtools::has_devel()
給出TRUE
2)我被迫使用.C
而不是.Call
。
這是R CMD INSTALL
的結果
* installing to library 'C:/Users/lenovo/Documents/R/win-library/3.0'
* installing *source* package 'mypackage' ...
** libs
make: Nothing to be done for `all'.
installing to C:/Users/lenovo/Documents/R/win-library/3.0/mypackage/libs/i386
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (mypackage)
通過將以下函數添加到R/
文件夾中的文件,我能夠在Windows 10上使用R 3.5解決此問題。
.onUnload <- function (libpath) { library.dynam.unload("mypackage", libpath)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.