簡體   English   中英

動態庫未在R二進制包構建中加載

[英]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_allCtrl+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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM