我有一些正在运行的 c++ 代码Lapacke,使用OpenBlas. 我想将此代码包含到 R 包中,并使用该Rcpp包在该函数和 R 之间传输数据。但不知何故,两人似乎并不喜欢对方。一旦我有了一个源文件#include <lapacke.h>, #include <Rcpp.h>它就不再编译了。两者分别工作正常。据我所知,有一大堆错误消息Rcpp已损坏(例如/home/Alex/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include/Rcpp/traits/traits.h:32:15: error: expected ‘)’ before ‘__extension__’).
我不知道为什么会这样。有没有办法同时使用两者?还是我应该做一些完全不同的事情?
这是一个给我错误的最小示例:
我使用创建了一个包
Rcpp::Rcpp.package.skeleton("LT", example_code = FALSE)我添加了一个
.cpp文件以/src包含#include <lapacke.h> #include <Rcpp.h> int test_LAPACK(){ return(1); }我添加了一个 Makvars 文件以
/src包含PKG_CXXFLAGS = -I/opt/OpenBLAS/include PKG_LIBS = -L/opt/OpenBLAS/lib -lopenblas -lpthread -lgfortran CXX_STD = CXX11编译安装
Rcpp::compileAttributes("LT") devtools::install("LT")