Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用静态库编写R扩展_C++_R_Static - Fatal编程技术网

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

C++ 如何使用静态库编写R扩展,c++,r,static,C++,R,Static,嗨,我正在尝试使用预编译的静态库和单个头文件构建一个R包。最好的方法是什么 因为我没有找到关于它的信息(仅在创建从Src编译的R包),我决定在扩展SRC目录中编写一个瘦C++包装类。我还将库所需的一个头文件添加到src目录中,现在理论上可以链接到我计算机上的库(我估计)。但是,我希望将该静态库与我的包一起提供,这也会使链接更容易(我可以将其硬编码到包目录) 有什么想法吗 首先感谢当R在运行时加载它时,任何包含已编译源代码的扩展包都将动态链接到R 也就是说,代码的任何外部依赖项都可以静态链接到扩展

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

因为我没有找到关于它的信息(仅在创建从Src编译的R包),我决定在扩展SRC目录中编写一个瘦C++包装类。我还将库所需的一个头文件添加到src目录中,现在理论上可以链接到我计算机上的库(我估计)。但是,我希望将该静态库与我的包一起提供,这也会使链接更容易(我可以将其硬编码到包目录)

有什么想法吗


首先感谢

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

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


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

嗨,德克,这就是我目前正在做的。但是,只有在我在R中调用package.install时,才会链接外部依赖项,而在发出R CMD build x时则不会。因此,当我将.tar.gz发送到另一台计算机时,它无法找到外部依赖项。这就是为什么我想把它放在包中,如果可能的话?您必须在源代码中包含静态库,并让PKG_LIBS正确引用它。不用说,您不能真的分发它,因为例如,CRAN希望将源文件分发到该静态库。