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


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