在带有Rcpp的R包中使用带有cpp文件的头(.h)文件

时间:2013-01-10 22:14:00

标签: c++ r rcpp

  

可能重复:
  Using 3rd party header files with Rcpp

注意:这是从这里开始讨论的延续: Using 3rd party header files with Rcpp。但是,问题是不同的,我认为我会把它作为自己的问题。

我有一个名为coolStuff.h的头文件,其中包含一个函数awesomeSauce(arg1),我想在我的R包中的cpp文件中调用它。

包装结构:

  • 的packageName

    • 说明
    • [人]

    • NAMESPACE

    • ř
      • someRscript.R
    • SRC
      • theCppFile.cpp
      • otherCppFile.cpp

theCppFile.cpp的代码:

`#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
double someFunctionCpp(double someInput){

 double someOutput = awesomeSauce(someInput);

return someOutput;`

1)我应该在包目录结构中放置coolStuff.h,以便在构建包并编译cpp文件时,将包含coolStuff.h中的代码。

2)我应该如何在coolStuff.h

中调用此文件

3)同样,如果我想在otherCppFile.cpp中呼叫theCppFile.cpp,那么

再次感谢您的帮助。我从上次谈话中学到了很多东西。如果某些地方有标准文档,我会很乐意接受RTFM,只需指出正确的方向。

1 个答案:

答案 0 :(得分:4)

是一个完整的小插图致力于使用Rcpp 构建一个包,是的,你应该看一下。

Rcpp属性确实非常适合快速和简单的事情,但即使他们依赖于包:你不能做他们的Depends:比如,RcppArmadillo,如果它不是由RcppArmadillo包提供的内联插件。

所以简而言之:是的,请阅读精细的手册和/或查看(当前)CRAN上使用Rcpp并取决于它的95个软件包。

编辑:这里有一个可能的捷径:如果coolStuff.h只是一个标题(因此没有链接到外部库),你可以在同一个目录中使用它你的来源。这有助于快速sourceCpp()探索。但是对于,您仍然需要执行额外的步骤,但即使其中一些已经自动化 - 请参阅Rcpp属性插图。

编辑2 :我刚刚重新阅读了您之前的问题。这个新问题毫无意义并且什么也没有增加。你上次读过并理解我们告诉你的了吗?