几年前,我编写了一个 dll,其中包含一些用于运行水文模型的函数。我忘记了 dll 内函数的名称和参数,不幸的是我忘记写一个好的文档文件。这些功能很复杂,所以我不想经历我可以使用的需要重写代码的替代方案。
我已将 dll 加载到 R 中,但正如我所说,我既不记得函数的名称,也不记得函数的语法。
如何列出函数以及如何查看函数的语法和我应该提供的参数?我知道参数是常见的模型输入,但老实说我不记得格式了。
此外,加载 dll 不会给出错误,但检查它是否已加载会给出FALSE。我怎样才能解决这个问题?
> x<-dyn.load("hbv_R64.dll")
> is.loaded("hbv_R64")
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
is.loaded("hbv_R64")TRUE仅当 hbv_R64.dll 具有名为 的符号(函数)时才会返回hbv_R64。
您可以使用 获取注册名称(不一定是源代码中的名称)和接口的列表getDLLRegisteredRoutines。
R> dlls <- getLoadedDLLs()
R> getDLLRegisteredRoutines(dlls$base)
.Call .Call.numParameters .Fortran .Fortran.numParameters
1 R_addTaskCallback 4 dqrcf 8
2 R_getTaskCallbackNames 0 dqrdc2 9
3 R_removeTaskCallback 1 dqrqty 7
4 dqrqy 7
5 dqrrsd 7
6 dqrxb 7
7 dtrco 6
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
x <- dyn.load("hbv_R64.dll")
getDLLRegisteredRoutines(x)
Run Code Online (Sandbox Code Playgroud)
?getDLLRegisteredRoutines说:“将来,我们还将提供有关参数类型的信息。” 所以这些信息已经可以访问了,尽管我不确定如何访问。