我正在尝试编译依赖于外部库HDFql的Rcpp包。
首先,我尝试按照reference manual中的说明编译一个普通的.cpp文件,工作正常:
n
其中g++ example.cpp -I./include/HDFql ./HDFql/libHDFql.a -fopenmp -ldl
文件夹包含头文件,./include/HDFql
是静态库。
然后我尝试在Rcpp包中执行等效操作。我的包目录结构是
./HDFql/libHDFql.a
|- R
|- script. r
|- src
|- HDFql
|- libHDFql.a
|- example.cpp
|- Makevars
|-inst
|- include
|- HDFql
|- ... header files...
的内容是
Makevars
我还将PKG_CPPFLAGS = -I../inst/include/HDFql/
PKG_LIBS = ./HDFql/libHDFql.a
LDLIBS = -fopenmp -ldl
添加到#include <Rcpp.h>
。运行example.cpp
会产生
../ inst / include / HDFql / H5public.h:156:19:错误:冲突声明'typedef long long int ssize_t' typedef long long ssize_t;
我根本不懂。谁能解释一下这里发生了什么?