如何在R中与DLL接口

How to interface with a DLL in R?

本文关键字:DLL 接口 中与      更新时间:2023-10-16

我从Matlab创建了dll扩展。然后,我想读取R.中的dll

我使用了dyn.load(),但它不起作用。

你能给我一些建议吗?

源代码是用什么语言编写的?

问题在于混合编译器。Matlab dll很可能是由Visual Studio构建的。而且,由于函数标识符被破坏,您根本无法在不同的编译器之间混合C++代码。您可以通过一些工作来混合C对象代码。MinGW网站上有一些常见问题解答。

根据@Mario回答下方评论线程中的讨论:我建议您尝试进行比较(R CMD SHLIB dll与Matlab dll),以帮助诊断问题。根据结果,我认为您需要弄清楚dll在C中的调用语法,并为其编写一个小的C包装器,该包装器使用该语法,但又可以使用R CMD SHLIB。。。R CMD SHLIB --help说,你可以在命令行上包括链接器选项(即,确保你正在将你的Matlab可调用dll与你的R-可调用dll链接),但我不确定确切的语法。研究一下R扩展手册的相关章节可能会有所帮助。

需要更多信息。通常的方法是这样的:

dyn.load("/path/to/library");

一些指针:

  • 确保库的体系结构正确(例如"x86_64"与"i386"与"armv7")
  • 请确保您没有试图在基于unix的计算机上加载windows".dll"(".so"、".dylib")