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


R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息


R语言 getDLLRegisteredRoutines 位于 base 包(package)。

说明

此函数允许我们查询 DLL 中注册到 R 的例程集,以增强动态查找、调用本机例程时的错误处理以及未来的潜在安全性。该函数提供了 DLL 中针对不同接口注册的每个例程的说明,即 .C.Call.Fortran.External

用法

getDLLRegisteredRoutines(dll, addNames = TRUE)

参数

dll

字符串或DLLInfo目的。该字符串指定感兴趣的 DLL 的文件名,并且给出时不带文件扩展名(例如,‘.dll' 或者 '。所以’)并且没有目录/路径信息。所以一个文件‘MyPackage/libs/MyPackage.so' 将被指定为 '⁠我的包⁠’。

DLLInfo 对象可以直接在调用 dyn.loadlibrary.dynam 中获取,或者可以在使用 getLoadedDLLs 加载 DLL 后找到 getLoadedDLLs ,它返回 DLLInfo 对象的列表(index-able by DLL)文件名)。

DLLInfo 方法避免了与具有相同名称但对应于不同目录中的文件的两个 DLL 相关的任何歧义。

addNames

一个逻辑值。如果这是 TRUE ,则返回列表的元素使用例程的名称进行命名(如 R 通过注册或原始名称所见)。如果是 FALSE ,则不会计算这些名称并将其分配给列表。因此,调用应该更快。列表中的 NativeSymbolInfo 对象中也提供了名称信息。

细节

这会在 R 内部注册并处理注册信息后获取注册信息。换句话说,它使用扩展信息。

该类有 print 方法,它仅打印已注册例程的类型。

"DLLRegisteredRoutines" 的列表,其中四个元素对应于为 .C.Call.Fortran.External 接口注册的例程。每个都是一个列表(类 "NativeRoutineList" ),其元素数量与为该接口注册的例程数量相同。

每个元素标识一个例程,并且是类 "NativeSymbolInfo" 的对象。此类的对象具有以下字段:

name

例程的注册名称(不一定是 C 代码中的名称)。

address

在加载的 DLL 中解析的例程的内存地址。如果符号尚未解析,则可能是NULL

dll

说明 DLL 的类 DLLInfo 的对象。这对于所有返回的元素都是相同的。

numParameters

调用本机例程时使用的参数数量。

例子

dlls <- getLoadedDLLs()
getDLLRegisteredRoutines(dlls[["base"]])

getDLLRegisteredRoutines("stats")

作者

Duncan Temple Lang duncan@wald.ucdavis.edu

参考

‘Writing R Extensions’ manual for symbol registration.

Duncan Temple Lang (2001). “In Search of C/C++ & FORTRAN Routines”. R News, 1(3), 20-23. https://www.r-project.org/doc/Rnews/Rnews_2001-3.pdf.

也可以看看

getLoadedDLLsgetNativeSymbolInfo 了解有关列出的入口点的信息。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Reflectance Information for C/Fortran routines in a DLL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。