当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。