Rcpp:将 C++ 函数移植到 R 中,找不到“Rcpp.h”文件

Sha*_*ang 5 c++ r rcpp

我有一些 C++ 代码。我想用 Rcpp 把它变成一个 R 包。

这是我在做什么:

  1. 通过执行创建一个包框架 Rcpp.package.skeleton("myPackageName")
  2. 运行devtools::load_all()后看看是否rcpp_hello_world()有效library(myPackageName)。确实如此!
  3. 获取所有 C++ 源代码并将其复制到/src. 再次rcpp_hello_world()运行后我仍然可以使用devtools::load_all()
  4. 对于现在驻留在 中的 C++ 源代码中的每个函数/src,只需执行以下操作:

(A) 放在.cpp文件的顶部`

 #include <Rcpp.h>
using namespace Rcpp;
Run Code Online (Sandbox Code Playgroud)

(B) 在每个函数前加上void这个注释

 //[[Rcpp::export]]
Run Code Online (Sandbox Code Playgroud)

现在,我愚蠢地认为,如果我运行devtools::load_all(),带有 compile 的代码和那些 C++ 函数将可以访问。这是不正确的。

这是之后的错误load_all()

 1 warning generated.
sourcecode1.cc:2:10: fatal error: 'Rcpp.h' file not found
#include <Rcpp.h>
         ^
1 error generated.
make: *** [myPackageName] Error 1
ERROR: compilation failed for package ‘myPackageName’
Run Code Online (Sandbox Code Playgroud)

找不到头文件 Rcpp.h

(1) 在使用 Rcpp 直接从 C++ 代码创建 R 包时,我的上述过程是否不正确?这是我从书中收集到的

(2) 我该如何解决这个问题?

Dir*_*tel 4

您需要运行“compileAttributes()”,RStudio 也会为您执行此操作。

简而言之,每次更改或添加接口时,都需要运行此函数。