是否可以将C源代码编译为R,以便生成的R函数与平台无关?

时间:2013-12-11 01:23:50

标签: c r cross-platform

我想编写一个调用我的C代码的R函数,并且不需要我在每个可能的平台上重新编译C代码(进入二进制文件或SO / DLL)。这样的事情有可能吗?

2 个答案:

答案 0 :(得分:2)

根据优秀评论,将您的代码设为package。更好的是,将包提交给CRAN。他们将负责为Linux,OSX和Windows分发二进制文件。

有关格式化的详细信息,请查看utils::package.skeleton以获取设置包的便捷工具,并查看D / L(来自CRAN)手册R-exts.pdf

答案 1 :(得分:1)

使用内联包(使用Rcpp):

# with  Rcpp plugin
if( require( Rcpp ) ) {
  fx <- cxxfunction( signature(x = "integer", y = "numeric" ) , ’
    return wrap( as<int>(x) * as<double>(y) ) ;
  ’, plugin = "Rcpp" )
fx( 2L, 5 )