我需要在我的R包中放置.c文件吗?

我需要在我的R包中放置.c文件吗?,r,c,R,C,也许这是一个天真的问题,但我正在构建一个R包,我想知道我的包是否依赖于用C编写的代码,我需要包含.C文件还是可以只包含.so文件?包分发的典型方式是作为源包,这意味着是的,您需要在包中包含.c文件。二进制软件包包括.so文件(或.lib或.dll,具体取决于操作系统),但我不知道有哪个软件包是单独作为二进制软件包分发的。例如,如果您安装了dplyr(并使用type=“source”,则是非windows的默认软件包),然后您将看到gcc命令将/src/文件编译到共享库中。我认为要在CRAN上获得

也许这是一个天真的问题,但我正在构建一个
R
包,我想知道我的包是否依赖于用C编写的代码,我需要包含.C文件还是可以只包含.so文件?

包分发的典型方式是作为源包,这意味着是的,您需要在包中包含
.c
文件。二进制软件包包括
.so
文件(或
.lib
.dll
,具体取决于操作系统),但我不知道有哪个软件包是单独作为二进制软件包分发的。例如,如果您安装了
dplyr
(并使用
type=“source”
,则是非windows的默认软件包),然后您将看到
gcc
命令将
/src/
文件编译到共享库中。我认为要在CRAN上获得它,您必须提供.c文件。(我的意思是,你到底如何为每个用户/操作系统提供正确的.so文件…?)R确实支持二进制软件包,windows默认安装它们。我说的是,我不知道有哪一个包是作为二进制包分发的,所有的东西(如果我没记错的话)都是作为源代码或源代码+二进制文件分发的。如果您从CRAN安装,那么它们通常都有;如果使用(比如)devtools::install\u github安装,它将按源代码安装并编译。一个问题:CRAN上的源程序包通常比其各自的二进制程序包早几天(或更长时间)可用,因此对于leading edge,必须安装源程序包。@r2evans感谢所有这些信息!