【发布时间】:2018-08-26 10:24:44
【问题描述】:
我尝试在 R Session 中访问 user32.dll 函数。我使用了代码:
dyn.load("c://windows//system32//user32.dll")
.External("MessageBeep", 0L)
但是 R 会话崩溃了。根据文档,.External 旨在在 R 包创建期间使用。但是,没有禁止使用它,如上所示。
我使用的是 Windows 8 和 RStudio (1.1.453) / R (3.5.0)。您能否建议一种从 R 会话中调用外部 Windows 函数的正确方法?
【问题讨论】:
-
你在哪里指定调用约定为stdcall?我的猜测是你不能也需要创建一个包装 dll。
-
据我所知,应该在编译期间指定调用约定。我应该看看 1) 编译一些包或 2) 使用一些外部进程来访问所需的 dll(类似于 VBA)?
-
该函数的调用约定是 stdcall。我不确定 R 是否可以调用 stdcall 函数。我认为它总是使用 cdecl。 VBA 不是您所需要的。您实际上要调用哪些函数?
-
感谢您的提示,我在cdecl & stdcall 上找到了 SO 帖子,并更彻底地尝试阅读 R 包创建文档。我正在尝试从任何 dll 函数调用任何函数。用于学术目的。