几年前,我写了一个带有运行水文模型功能的dll。我忘记了dll中函数的名称和参数,遗憾的是我忘了编写一个好的文档文件。功能很复杂,所以我不想通过我可以使用的替代方法来重写代码。
我已将我的dll加载到R中,但正如我所说,我既不记得函数的名称也不记得函数的语法。
如何列出函数以及如何查看函数的语法和我应该提供的参数?我知道这些论点是常见的模型输入,但说实话,我不记得格式。
另外加载dll并不会出错,但检查它是否加载会产生 FALSE 。我该如何解决这个问题?
> x<-dyn.load("hbv_R64.dll")
> is.loaded("hbv_R64")
[1] FALSE
答案 0 :(得分:3)
is.loaded("hbv_R64")
的符号(函数), TRUE
将仅返回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
在你的情况下:
x <- dyn.load("hbv_R64.dll")
getDLLRegisteredRoutines(x)
?getDLLRegisteredRoutines
说,&#34;将来,我们还会提供有关参数类型的信息。&#34;因此,信息已经可以访问,但我不确定如何。
答案 1 :(得分:-1)
最佳解决方案:使用反汇编。
使用工具(例如http://www.nirsoft.net/utils/dll_export_viewer.html)很容易阅读这些功能,但很难找到参数。