我能否在R中加载第三方.dll文件?

3
我正在使用 Windows 7 操作系统,我知道该动态链接库是使用 Visual Studio C++ 2010 编译的。由于没有源代码,在创建包(NAMESPACE)时无法立即生成它。 目前阶段,我不需要创建一个包,我只想使用 dyn.load() 在 R 中加载该库。由于它是一个 dll 文件,我想它可以在任何客户端程序中使用,但我想要确认一下,因为我知道它没被编译使用GNU gcc

编辑:

我想调用该 DLL 部署的所有函数。


1
你对DLL一无所知。我不确定dyn.load是否适用于此,因为R会寻找名为R_init_mylib的符号...老实说,在你提出这个问题之前,我并没有看到你尝试过什么。 - agstudy
你想调用任何函数,还是只想加载 DLL? - David Heffernan
我知道这些函数的输入和输出都是SEXP类型,所以在加载.dll后,我可以使用.Call来调用这些函数。还有一种版本使用.C,您需要将本机C类型与输出指针一起传递。 - Marcelo Sardelich
@DavidHeffernan 我想调用dll部署的函数... - Marcelo Sardelich
1
这个问题并没有涉及到那方面。你只是在问能否加载 DLL。 - David Heffernan
@DavidHeffernan,同意。我刚刚编辑了这篇帖子。谢谢... - Marcelo Sardelich
1个回答

6

是的,R可以使用dyn.load加载它。但你可能无法实际调用其导出的函数。除非函数的参数与R能够处理的相对应,否则它们将无法使用。如果是这种情况,您可以编写一个包装器dll,作为它和R之间的翻译层。


该dll使用SEXP输入和输出参数...在这种情况下,即使我没有使用CMD R SHLIB或任何GNU编译器进行编译和链接,我是否能够访问这些功能? - Marcelo Sardelich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接