如何使用静态库编写R扩展

How to write R extension using a static library

本文关键字:扩展 何使用 静态      更新时间:2023-10-16

嗨,我正试图使用预编译的静态库和单个头文件来构建一个R包。最好的方法是什么?

因为我没有找到任何关于它的信息(只有关于创建从src编译的R包的信息),所以我决定在扩展src目录中编写一个精简的C++包装器类。我还将库所需的一个头文件添加到src目录中,理论上现在可以链接到我电脑上的库(我想)。然而,我想将该静态库与我的包一起提供,这也会使链接更容易(我可以将其硬编码到包目录中)。

有什么想法吗?

感谢

首先,任何到R的包含编译源代码的扩展包都将动态链接,因为R在运行时加载它。

也就是说,代码的任何外部依赖项都可以静态链接到扩展包中。要做到这一点,您可以尝试在PKG_LIBS参数中列出静态库及其完整路径,以及强制静态链接的标准方式。

我想不出一个使用这种方法的CRAN包示例,或者我建议将其作为一节。