Ale*_*lex 3 c++ r rcpp lapacke r-package
我有一些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 \xe2\x80\x98)\xe2\x80\x99 before \xe2\x80\x98__extension__\xe2\x80\x99).
我不知道为什么会发生这种情况。有没有办法同时使用两者?\n或者我应该做一些完全不同的事情?
\n\n这是一个给我错误的最小示例:
\n\n我使用创建了一个包
\n\nRcpp::Rcpp.package.skeleton("LT", example_code = FALSE)\nRun Code Online (Sandbox Code Playgroud)我添加了一个.cpp文件来/src包含
#include <lapacke.h>\n#include <Rcpp.h>\n\nint test_LAPACK(){\n return(1);\n}\nRun Code Online (Sandbox Code Playgroud)我添加了一个 Makvars 文件来/src包含
PKG_CXXFLAGS = -I/opt/OpenBLAS/include\nPKG_LIBS = -L/opt/OpenBLAS/lib -lopenblas -lpthread -lgfortran\nCXX_STD = CXX11\nRun Code Online (Sandbox Code Playgroud)编译安装
\n\nRcpp::compileAttributes("LT")\ndevtools::install("LT")\nRun Code Online (Sandbox Code Playgroud)它实际上可以在我的系统上按照标准运行,sudo apt install liblapacke-dev 前提是我还更改了包含顺序。
证人:
\n\nrob:/tmp/lapacke/LT$ cat src/lt.cpp \n#include <Rcpp.h>\n#include <lapacke.h>\n\nint test_LAPACK(){\n return(1);\n}\nrob:/tmp/lapacke/LT$ ls src/ ## no Makevars needed\nlt.cpp\nrob:/tmp/lapacke/LT$ \nRun Code Online (Sandbox Code Playgroud)\n\nrob:/tmp/lapacke/LT$ build.r \n* checking for file \xe2\x80\x98./DESCRIPTION\xe2\x80\x99 ... OK\n* preparing \xe2\x80\x98LT\xe2\x80\x99:\n* checking DESCRIPTION meta-information ... OK\n* cleaning src\n* installing the package to process help pages\n* saving partial Rd database\n* cleaning src\n* checking for LF line-endings in source and make files and shell scripts\n* checking for empty or unneeded directories\nRemoved empty directory \xe2\x80\x98LT/R\xe2\x80\x99\n* building \xe2\x80\x98LT_1.0.tar.gz\xe2\x80\x99\n\nrob:/tmp/lapacke/LT$\nRun Code Online (Sandbox Code Playgroud)\n\nrob:/tmp/lapacke/LT$ install.r LT_1.0.tar.gz \n* installing *source* package \xe2\x80\x98LT\xe2\x80\x99 ...\n** libs\nccache g++ -I"/usr/share/R/include" -DNDEBUG -I"/usr/local/lib/R/site-library/Rcpp/include" -fpic -g -O3 -Wall -pipe -march=native -c lt.cpp -o lt.o\nccache g++ -Wl,-S -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o LT.so lt.o -L/usr/lib/R/lib -lR\ninstalling to /usr/local/lib/R/site-library/LT/libs\n** help\n*** installing help indices\n** building package indices\n** testing if installed package can be loaded\n* DONE (LT)\nrob:/tmp/lapacke/LT$ \nRun Code Online (Sandbox Code Playgroud)\n\n(在我添加一行后// [[Rcpp::export]],运行compileAtttributes()并重建并安装。)
rob:/tmp/lapacke/LT$ r -lLT -p -e\'test_LAPACK()\'\n[1] 1\nrob:/tmp/lapacke/LT$ \nRun Code Online (Sandbox Code Playgroud)\n\n检查你的编译器。没有根本原因这不应该工作,但它在这里工作(Ubuntu 18.04)。
\n| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |