cxxfunction错误消息,内联R包

时间:2014-08-25 17:59:15

标签: c++ r rcpp

我试图重现基于R帮助的R示例。 这是来自内联包的cxx函数的示例。

require(Rcpp)

require(inline)

# 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 )

    ## equivalent shorter form using rcpp()
fx <- rcpp(signature(x = "integer", y = "numeric"),
               ' return wrap( as<int>(x) * as<double>(y) ) ; ')

}

我收到了这条消息:

Error in compileCode(f, code, language = language, verbose = verbose) : Compilation ERROR, function(s)/method(s) not created! Warning message: running command 'make -f "C:/PROGRA~1/R/R-30~1.3/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" ....

另外:

Warning message: running command 'C:/PROGRA~1/R/R-30~1.3/bin/i386/R CMD SHLIB file3a86e316ef8.cpp ...

我正在使用:

平台i386-w64-mingw32和R-3.0.3

1 个答案:

答案 0 :(得分:1)

正如凯文所说,它更容易使用属性。属性// [[Rcpp::export]]为您完成所有工作。

安装RRcpp上的当前版本后,创建一个名为test.cpp的文件来放置此代码:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double fx(int x, double y){
    return x*y;
}


/*** R
fx(2L,5)
fx(2L,5.1)
*/

然后在R会话中运行:Rcpp::sourceCpp('test.cpp')

如果您已按照安装RR-tools的说明并正确设置PATH个变量(如果在Windows上),这应该可行。