【发布时间】:2016-11-21 23:49:10
【问题描述】:
我有一些 C++ 代码。我想用 Rcpp 把它变成一个 R 包。
这就是我正在做的事情:
- 通过执行
Rcpp.package.skeleton("myPackageName")创建包框架 - 运行
devtools::load_all()以查看rcpp_hello_world()在library(myPackageName)之后是否有效。确实如此! - 获取所有 C++ 源代码并将其复制到
/src。再次运行devtools::load_all()后,我仍然可以使用rcpp_hello_world()。 - 对于现在位于
/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) 我该如何解决这个问题?
【问题讨论】: