我有一些正在运行的 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")