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