当C ++函数相互调用时Rcpp集成

时间:2014-05-09 15:28:50

标签: c++ r rcpp

我开始使用Rcpp框架将C ++函数与R进行集成。

以下集成工作正常:

   cppFunction('
   double normal_dens( double x ) 
   {
     const double  SQRT2PI = 2.50662827463;
     return( exp(-x*x/2.0)/SQRT2PI );
   }
  ')

接下来我要整合:

   cppFunction('
   double test( double x ,double a) 
   {
    return( a* normal_dens(x);); 
   }
  ')

内部cpp编译器抱怨(正确地),函数normal_dens是未知的。最简单的方法是什么?

很多人

1 个答案:

答案 0 :(得分:3)

这些cppFunction调用中的每一个都创建一个独立的共享库。他们彼此不了解。

一个简单的替代方法是将所有文件放在同一个文件中:

#include <Rcpp.h>

// [[Rcpp::export]]
double normal_dens( double x ) {
  const double  SQRT2PI = 2.50662827463;
  return( exp(-x*x/2.0)/SQRT2PI );
}

// [[Rcpp::export]]
double test( double x ,double a){
  return( a* normal_dens(x);); 
}

然后在此文件上调用sourceCpp。然后,您将要学习如何制作包。