c++ - Rcpp:将 C++ 函数移植到 R,找不到 'Rcpp.h' 文件

标签 c++ r rcpp

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

这是我正在做的:

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

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

 #include <Rcpp.h>
using namespace Rcpp;

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

 //[[Rcpp::export]]

现在,我愚蠢地认为,如果我运行 devtools::load_all(),编译的代码和那些 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’

找不到头文件Rcpp.h

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

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

最佳答案

您需要运行 RStudio 也会为您执行的“compileAttributes()”。

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

关于c++ - Rcpp:将 C++ 函数移植到 R,找不到 'Rcpp.h' 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40731523/

相关文章:

c++ - 如果您的团队就一组别名达成一致,那么对 STL 容器使用类型别名是否是一种不好的做法?

c++ - 如何在RANSAC平面估算器上包含自定义约束/等级?

c++ - 类型同名的成员

r - 有没有不使用客户端-服务器方法的 R GUI?

r - 使用加权 t 检验汇总多列

r - 在 Julia 中编写 R 包?

具有自己的动态模板 vector 类的 C++ 联系人处理程序

c - vector 、矩阵和数据帧是如何在 R 中实现的?

c++ - 如何在 Rcpp/C++ 中将函数作为参数传递?

r - 调试 R 中加载的 Rcpp 编译代码(在 OS X Mavericks 上)有哪些有效方法?