繁体   English   中英

致命错误:RcppEigen.h:没有这样的文件或目录

[英]fatal error: RcppEigen.h: No such file or directory

我对RcppRcppEigenRcppRcppEigen也许就是为什么我自己无法弄清楚的原因:

我只想编写一个包含Eigen库的c ++函数。 为了测试它是否有效,我从http://people.math.aau.dk/~sorenh/misc/Rdocs/Rcpp/RcppSHLIB.pdf中获取了以下示例:

#include <Rcpp.h>
#include <RcppEigen.h>
RcppExport SEXP C_spdinv_eigen ( SEXP X_ ){
using Eigen::Map;
using Eigen::MatrixXd;
typedef Eigen::Map<Eigen::MatrixXd> MapMatd;
const MapMatd X(Rcpp::as<MapMatd>(X_));
const MatrixXd Xinv(X.inverse());
return(Rcpp::wrap(Xinv));
}

但我得到以下错误:

rcpp-test.cpp:2:23: fatal error: RcppEigen.h: No such file or directory
compilation terminated.
make: *** [rcpp-test.o] Error 1
g++ -I/usr/share/R/include -DNDEBUG    -I"/usr/local/lib/R/site-library/Rcpp/include"    -fpic  -O3 -pipe  -g  -c rcpp-test.cpp -o rcpp-test.o 
Error in Rcpp::sourceCpp("rcpp-test.cpp") : 
  Error 1 occurred building shared library.

编译仅包含#include <Rcpp.h>的脚本可以正常工作。 RcppEigen.h文件位于/usr/local/lib/R/site-library/RcppEigen/include目录中。 我尝试使用R CMD INSTALL ...install.package安装RcppEigen

我的seccionInfo是

R version 3.0.2 (2013-09-25)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C            LC_COLLATE=C         LC_MONETARY=C       
 [6] LC_MESSAGES=C        LC_PAPER=C           LC_NAME=C            LC_ADDRESS=C         LC_TELEPHONE=C      
[11] LC_MEASUREMENT=C     LC_IDENTIFICATION=C 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RcppEigen_0.3.2.1.1 Rcpp_0.11.1        

loaded via a namespace (and not attached):
[1] Matrix_1.1-1.1  grid_3.0.2      lattice_0.20-27 tools_3.0.2    

谢谢你的帮助!

您没有说如何尝试编译函数。 重要的是:

  • 在包中,使用LinkingTo: RcppEigen

  • 在用于Rcpp属性的函数中,使用适当的Rcpp::depends(RcppEigen)

Rcpp画廊和其他地方,这里有很多示例。 跟随他们,但是遵循所有步骤。 现在,您让编译器告诉您RcppEigen是未知的。

我的Rcpp书详细介绍了第2章中的构建问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM