我想提交一个包,但是在阅读 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 code tp pass a
、b
和 c
到您的函数——然后返回结果(可能是数字 vector ?)。
从 Rcpp-introduction 开始小插图并从那里拿走它。
关于c - 构建一个使用 c 代码库的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239904/