我想提交一个包,但是在读取 R 存储库策略时,我发现:“源包可能不包含任何形式的二进制可执行代码。”。我目前在 .../inst
中有一个适用于 mac、win 和 Linux 的二进制可执行文件,并且该软件包在所有操作系统中都运行良好。但是,我认为 CRAN 不会接受这一点。我已经开始找到一些信息,但我是 C 的新手,我读到的所有内容都非常困惑。似乎有几种方法可以执行此操作,我不知道哪种方法最好。
我的二进制可执行文件需要目录中的特定类文件,该文件由函数呈现。
我所有的函数都依赖于 c 库。那么,我应该采取什么行动才能获得 CRAN 的认可? ...例如,使用 Rtools 编译并将可执行文件放入 .../inst
?将库留在 .../inst
中并创建一个可以完成工作的函数?
自学。 更新解决问题所采取的步骤:
安装 Rcpp
包,install.packages("Rcpp")
并安装 R tools 。
在R studio
中新建一个类型为“Package w/ Rcpp
”的包,在“Create package based on source files
”中选择我的c代码库的主文件。
最佳答案
您的分析是正确的:二进制文件不会在 CRAN 上飞行。所以你需要把它变成一个图书馆。或者,更确切地说,是 CRAN 的一个包。
这并不像听起来那么难。首先,如果你写了二进制文件,你可能知道如何重新组织代码来做
void main() {
// preliminary stuff on argc/argv
// sort our arguments
// call main function f(a, b, c)
}
如果你能到达那个地方,你就快完成了。将执行
f(a,b,c)
的文件放入 src/
,并使用(相当简单,相对而言)Rcpp 代码 tp 将 a
、 b
和 c
传递给您的函数——然后返回结果(可能是数字 vector ?)。从 Rcpp-introduction 小插图开始,然后从那里开始。
关于c - 构建使用 c 代码库的 R 包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58239904/