Rcpp:将 C++ 函数移植到 R,找不到 'Rcpp.h' 文件
Rcpp: porting C++ function into R, 'Rcpp.h' file not found
我有一些 C++ 代码。我想用 Rcpp 把它做成一个 R 包。
这是我正在做的事情:
- 通过执行
Rcpp.package.skeleton("myPackageName")
创建包框架
- 运行
devtools::load_all()
看rcpp_hello_world()
在library(myPackageName)
之后是否有效。确实如此!
- 获取所有 C++ 源代码并将其复制到
/src
。在 运行ning 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) 我该如何解决这个问题?
您需要 运行 'compileAttributes()' RStudio 也可以为您完成。
总之每次修改或添加接口,都需要运行这个功能。
我有一些 C++ 代码。我想用 Rcpp 把它做成一个 R 包。
这是我正在做的事情:
- 通过执行
Rcpp.package.skeleton("myPackageName")
创建包框架
- 运行
devtools::load_all()
看rcpp_hello_world()
在library(myPackageName)
之后是否有效。确实如此! - 获取所有 C++ 源代码并将其复制到
/src
。在 运行ningdevtools::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) 我该如何解决这个问题?
您需要 运行 'compileAttributes()' RStudio 也可以为您完成。
总之每次修改或添加接口,都需要运行这个功能。