我正在密切关注Rcpp package documentation中的说明,但我收到了错误
Error in .Call("MicroCreditLRVBR_TestJacobian", PACKAGE = "MicroCreditLRVBR") :
"MicroCreditLRVBR_TestJacobian" not available for .Call() for package "MicroCreditLRVBR"
包框架是使用Rcpp.package.skeleton()
构建的。我复制了R
和C++
代码,修改了Makevars
以指向包外的一些代码,更新了DESCRIPTION
以链接到RcppEigen
,以及跑了compileAttributes()
。然后我运行R CMD build
来创建.gz
文件并R CMD INSTALL
来安装它。它已成功构建和链接,但因上述错误而终止。
我可以看到函数MicroCreditLRVBR_TestJacobian
确实在RcppExports.cpp
和RcppExports.R
中定义。我不知道为什么它不适用于.Call
。
请注意,NAMESPACE
包括useDynLib(MicroCreditLRVBR)
和exportPattern("^[[:alpha:]]+")
。
当前状态的包的公共副本位于this github repo。任何帮助将不胜感激。
答案 0 :(得分:5)
从名称切换时:
<强> MicroCreditLRVB 强>
到
<强> MicroCreditLRVB - [R 强>
您忘记在NAMESPACE
file
e.g。
filter
转到:
useDynLib(MicroCreditLRVB)
此外,从microcredit_stan_lib.R删除第1-22行。它们应该被放入&#34;演示&#34;在useDynLib(MicroCreditLRVBR)
内找到的文件。
最后,使用/inst
导入提升标题,并减少BH
中的绝对路径。
答案 1 :(得分:-1)
通过删除行
解决了问题jac_test <- TestJacobian()
来自文件microcredit_stan_lib.R
。
为了将来参考,我在src/
中有一个定义了
// [[Rcpp::export]]
Rcpp::List TestJacobian() {
... do stuff ...
}
..以及在最外层环境中有一行的库文件R/microcredit_stan_lib.R
jac_test <- TestJacobian()
通过评论jac_test <- TestJacobian()
,问题得以解决。我不确定为什么。