1
我有一些C++代码。我想用Rcpp做这个R包。Rcpp:将C++函数移植到R中,未找到'Rcpp.h'文件
下面是我在做什么:
- 通过执行
Rcpp.package.skeleton("myPackageName")
- 运行
devtools::load_all()
看rcpp_hello_world()
作品是否library(myPackageName)
后创建一个包框架。它确实! - 取所有C++源代码并将其复制到
/src
。再次运行devtools::load_all()
后,仍然可以使用rcpp_hello_world()
。 - 对于在C++源代码中的每个函数现在居住在
/src
,简单地做到这一点:
(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)我该如何解决这个问题?
@DirkEddelbuettel感谢您的回应。 (1)在package目录下,我运行了'library(Rcpp)','compileAttributes(pkgdir =“。”,verbose = getOption(“verbose”))'和'devtools :: load_all()'。我得到了与上面相同的错误。 2.这在RStudio中会更容易? – ShanZhengYang
检查您是否已更新文件RcppExports。 R和RcppExports.cpp作为结果。接下来的重建将会反映它们。而对于什么是值得我不使用devtools自己。 –
@DirkEddelbuettel你是对的!函数在'RcppExports.R'和'RcppExports.cpp'中。所以,它是''compileAttributes()'把它们放在那里。问题:“为了什么是值得我不使用devtools我自己” 然后,我将如何“加载”我的包,以便我可以使用它?也就是'library(myPackageName)'并调用函数? – ShanZhengYang