當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R library.dynam 從包中加載 DLL


R語言 library.dynam 位於 base 包(package)。

說明

如果尚未加載,則加載指定的已編譯代碼文件,否則將其卸載。

用法

library.dynam(chname, package, lib.loc,
              verbose = getOption("verbose"),
              file.ext = .Platform$dynlib.ext, ...)

library.dynam.unload(chname, libpath,
                     verbose = getOption("verbose"),
                     file.ext = .Platform$dynlib.ext)

.dynLibs(new)

參數

chname

命名要加載的 DLL(也稱為動態共享對象或庫)的字符串。

package

帶有包名稱的字符向量。

lib.loc

說明位置的字符向量R可供搜索的 Library 樹。

libpath

要卸載其 DLL 的已加載包的路徑。

verbose

一個邏輯值,指示在加載 DLL 之前是否在控製台上打印公告。默認值取自係統 options 中的詳細條目。

file.ext

擴展名(包括‘⁠.⁠’(如果使用)附加到文件名以指定要加載的庫。這默認為操作係統的適當值。

...

某些庫需要額外的參數,這些參數會傳遞給 dyn.load 的調用,以控製庫及其依賴項的加載方式。

new

與包加載的 DLL 相對應的 "DLLInfo" 對象列表。可能會失蹤。

細節

請參閱 dyn.load 了解這些函數處理的對象類型。

library.dynam被設計為在包內使用而不是在命令行中使用,並且實際上應該隻在包內使用.onLoad。 DLL 的係統特定擴展(例如,‘。所以' 或者 '.sl’ 在類 Unix 係統上,‘.dll’ 在 Windows 上)不應添加。

library.dynam.unload 設計用於 .onUnload :它卸載 DLL 並更新 .dynLibs() 的值

.dynLibs 用於獲取(不帶參數)或設置當前由包加載的 DLL(使用 library.dynam )。

如果未指定chname,則library.dynam返回與包加載的DLL對應的類"DLLInfoList"的對象。

如果指定chname,則以不可見方式返回標識DLL 並可在將來的調用中使用的"DLLInfo" 類的對象。請注意,"DLLInfo" 類有一個 $ 方法,可用於解析該 DLL 中的本機符號。

library.dynam.unload 無形地返回一個 "DLLInfo" 類的對象,標識 DLL 已成功卸載。

.dynLibs 返回與其當前值對應的"DLLInfoList" 類的對象。

警告

不要在 library.dynam 加載的 DLL 上使用 dyn.unload:使用 library.dynam.unload 確保 .dynLibs 得到更新。否則,後續調用 library.dynam 將被告知該對象已加載。

請注意,是否可以卸載 DLL,然後重新加載同一文件的修訂版本是 OS-dependent:請參閱 dyn.unload 幫助的“值”部分。

例子

## Which DLLs were dynamically loaded by packages?
library.dynam()

## More on library.dynam.unload() :
require(nlme)
nlme:::.onUnload # shows library.dynam.unload() call
detach("package:nlme")  # by default, unload=FALSE ,  so,
tail(library.dynam(), 2)# nlme still there

## How to unload the DLL ?
## Best is to unload the namespace,  unloadNamespace("nlme")
## If we need to do it separately which should be exceptional:
pd.file <- attr(packageDescription("nlme"), "file")
library.dynam.unload("nlme", libpath = sub("/Meta.*", '', pd.file))
tail(library.dynam(), 2)# 'nlme' is gone now
unloadNamespace("nlme") # now gives warning

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

getLoadedDLLs 有關 "DLLInfo""DLLInfoList" 對象的信息。

.onLoad , library , dyn.load , .packages , .libPaths

SHLIB 了解如何創建合適的 DLL。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Loading DLLs from Packages。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。