RcppEigen包运行提示not available for .Call()错误如何解决
报错排查与解决方案
- 第一步:检查C函数导出注解
确认svolApproxLL对应的C函数定义前是否正确添加了// [[Rcpp::export]]注解,注解位置错误、拼写错误或者遗漏都会导致编译时不会生成对应的R可调用符号。
安装包后可运行getDLLRegisteredRoutines("pfexamplesinr")查看.Call类别的注册函数列表,如果没有_pfexamplesinr_svolApproxLL条目,说明函数未被正确导出。 - 第二步:验证NAMESPACE配置
确认包的NAMESPACE文件中存在useDynLib(pfexamplesinr, .registration=TRUE)配置。不要手动修改NAMESPACE文件,正确操作是在包的DESCRIPTION文件中添加Roxygen: list(markdown = TRUE),并在任意R脚本或C++函数的Roxygen注释块中添加@useDynLib pfexamplesinr, .registration = TRUE,之后重新运行devtools::document()生成正确的NAMESPACE。 - 第三步:修正Makevars配置
你当前的Makevars中将PKG_LIBS注释禁用,若代码中调用了RcppEigen依赖的线性代数库,需要修改Makevars为以下内容:
同时确认PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)likelihoods.cpp中NP宏定义的数值和你测试时传入的numParts参数值一致,宏定义不匹配可能导致函数编译失败。 - 第四步:清理缓存重新安装
先运行remove.packages("pfexamplesinr")卸载旧版本,再删除本地包目录下所有自动生成的中间文件:src/*.o、src/*.so(Windows系统对应src/*.dll)、src/RcppExports.cpp、R/RcppExports.R,之后重新运行以下命令强制安装:
安装完成后再运行测试代码即可。devtools::install_github("tbrown122387/pfexamplesinr@cffe989", force = TRUE)
内容的提问来源于stack exchange,提问作者Taylor
相关产品推荐
相关产品推荐

