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

标签 c++ r rcpp

<分区>

Possible Duplicate:
Using 3rd party header files with Rcpp

注意:这是从此处开始的讨论的延续: Using 3rd party header files with Rcpp .然而,这个问题非常不同,我想我会把它作为一个单独的问题提出来。

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

包结构:

  • 包名

    • 描述
    • [人]

    • 命名空间

    • R
      • someRscript.R
    • 来源
      • CppFile.cpp
      • 其他CppFile.cpp

CppFile.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) 同样,如果我想调用 theCppFile.cpp 中的 otherCppFile.cpp 在哪里做

再次感谢您的帮助。我从上次谈话中学到了很多东西。如果某处有关于其中一些内容的标准文档,我会很高兴使用 RTFM,请为我指明正确的方向。

最佳答案

有一个完整的小插图专门介绍如何使用 Rcpp 构建包,是的,您应该看看它。

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

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

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

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

关于c++ - 在带有 Rcpp 的 R 包中使用头文件 (.h) 和 cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268245/

相关文章:

c++ - 为什么循环中耗时与迭代次数不成正比

c++ - C++代码中的异常安全

ggplot中的Rscript无效字体类型

C++ : Time taken in a for loop iteration

c++ - 在 XPlane 窗口之上强制 Qt 窗口

r - 使用 reduce2 和 rlang 改变列

r - 使用 case_when() 分配两个新列,而不是一个

c++ - 使用 Rcpp 进行高效矩阵子集化

c++ - 在 Rcpp 中实现应用功能

Rcpp - 在 sourceCpp 引用的文件中使用多个 C++ 函数?