getNativeSymbolInfo
位于 base
包(package)。 说明
这会查找并返回一个或多个动态加载或‘exported’内置本机符号的说明。对于每个名称,它返回有关符号名称、它所在的库的信息,以及它期望的参数数量(如果有)以及应该通过哪个接口调用它的信息(即 .Call
、 .C
、 .Fortran
或 .External
)。此外,它还返回符号的地址,并且可以将其传递给其他 C 例程。具体来说,这提供了一种在不同动态加载的包库之间显式共享符号的方法。此外,它还提供了一种查询符号解析位置的方法,并有助于诊断与动态解析相关的奇怪行为。
用法
getNativeSymbolInfo(name, PACKAGE, unlist = TRUE,
withRegistrationInfo = FALSE)
参数
name |
本地符号的名称。 |
PACKAGE |
一个可选参数,指定要限制对该符号的搜索的 DLL。如果这是 |
unlist |
一个逻辑值,控制使用单个符号名称调用函数时如何返回结果。如果 |
withRegistrationInfo |
一个逻辑值,指示是否、if |
细节
这使用与所有本机接口( .Call
等)中使用的相同机制来解析符号。如果该符号已由包含该符号的 DLL 显式注册,则将返回有关参数数量和调用该符号的接口的信息。否则,返回通用的本机符号对象。
值
通常,NativeSymbolInfo
元素的列表,其元素可以通过调用中的name
的元素进行索引。每个 NativeSymbolInfo
对象都是一个包含以下元素的列表:
name |
符号的名称,由 |
address |
如果 |
dll |
包含 3 个元素的列表:
|
如果例程是由动态加载库显式注册的,则列表包含第四个字段
numParameters |
调用此例程时应传递的参数数量。 |
此外,该列表还将有一个附加类,即 CRoutine
、 CallRoutine
、 FortranRoutine
或 ExternalRoutine
,对应于应通过其调用的 R 接口。
如果未找到任何符号,则会引发错误。
如果 name
仅包含一个符号名称,并且 unlist
是 TRUE
,则返回单个 NativeSymbolInfo
而不是包含该一个元素的列表。
注意
的第三个元素NativeSymbolInfo
对象被重命名为package
到dll
在R版本 3.6.0,为了与名称保持一致NativeSymbolInfo
返回的对象getDLLRegisteredRoutines()
.
注意
访问此反射信息的一个动机是能够将本机例程作为 C 中的函数指针传递给 C 例程。这使我们能够处理本机例程并R以类似的方式起作用,例如当传递一个R函数到 C 代码,在计算的不同点对该函数进行回调(例如,nls
)。此外,我们可以只解析一次符号,并避免重复解析或使用内部缓存。
作者
Duncan Temple Lang
参考
For information about registering native routines, see “In Search of C/C++ & FORTRAN Routines”, R-News, volume 1, number 3, 2001, p20-23 (https://www.r-project.org/doc/Rnews/Rnews_2001-3.pdf).
也可以看看
getDLLRegisteredRoutines
、is.loaded
、.C
、.Fortran
、.External
、.Call
、dyn.load
。
相关用法
- R getwd 获取或设置工作目录
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R get 返回命名对象的值
- R getLoadedDLLs 获取当前会话中加载的 DLL
- R gettext 翻译短信
- R grep 模式匹配和替换
- R gzcon 通过连接(解)压缩 I/O
- R groupGeneric S3组通用函数
- R gc 垃圾收集
- R gl 生成因子水平
- R grouping 分组排列
- R gc.time 报告垃圾收集所花费的时间
- R grepRaw 原始向量的模式匹配
- R gctorture 酷刑垃圾收集者
- R file.path 构造文件路径
- R vector 向量 - 创建、强制等
- R lapply 对列表或向量应用函数
- R dump R 对象的文本表示
- R Sys.getenv 获取环境变量
- R rank 样本排名
- R pushBack 将文本推回连接
- R strsplit 分割字符向量的元素
- R seq.Date 生成规则的日期序列
- R invisible 将打印模式更改为不可见
- R noquote “无引号”字符串打印类
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Obtain a Description of one or more Native (C/Fortran) Symbols。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。