我正在尝试编译一个依赖于外部库HDFql的 Rcpp 包。
首先,我尝试按照参考手册中的说明编译一个普通的 .cpp 文件,效果很好:
g++ example.cpp -I./include/HDFql ./HDFql/libHDFql.a -fopenmp -ldl
其中./include/HDFql文件夹包含头文件并且./HDFql/libHDFql.a是静态库。
然后我尝试在 Rcpp 包中做同样的事情。我的包目录结构是
|- 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. 运行devtools::document()产量
../inst/include/HDFql/H5public.h:156:19:错误:冲突声明'typedef long long int ssize_t' typedef long long ssize_t;
我根本不明白。谁能解释这里发生了什么?