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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。