gpt4 book ai didi

c++ - 如何使用 dyn.load 获取加载到 R 中的 DLL 中的函数列表

转载 作者:太空狗 更新时间:2023-10-29 21:35:40 26 4
gpt4 key购买 nike

几年前,我编写了一个 dll,其中包含一些用于运行水文模型的功能。我忘记了 dll 中函数的名称和参数,不幸的是我忘记写一个好的文档文件。这些功能很复杂,所以我不想经历我本可以使用的替代方案,因为这些替代方案需要重写代码。

我已将我的 dll 加载到 R 中,但正如我所说,我既不记得函数的名称也不记得函数的语法。

如何列出函数以及如何查看函数的语法和我应该提供的参数?我知道参数是常见的模型输入,但老实说我不记得格式了。

此外,加载 dll 不会出错,但检查它是否已加载会给出 FALSE。我该如何解决这个问题?

> x<-dyn.load("hbv_R64.dll")
> is.loaded("hbv_R64")
[1] FALSE

最佳答案

is.loaded("hbv_R64") 只会返回 TRUE 如果 hbv_R64.dll 有一个名为 hbv_R64 的符号(函数)。

您可以使用getDLLRegisteredRoutines 获取已注册名称(不一定是源代码中的名称)和接口(interface)的列表。

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 说,“将来,我们还将提供有关参数类型的信息。”所以这些信息已经可以访问了,尽管我不确定如何访问。

关于c++ - 如何使用 dyn.load 获取加载到 R 中的 DLL 中的函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41722745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com