C++ 函数不可用于使用Rcpp.package.skeleton()和compileAttributes的.Call

C++ 函数不可用于使用Rcpp.package.skeleton()和compileAttributes的.Call,c++,r,rcpp,C++,R,Rcpp,我试着严格按照图中的方向走,但我发现了错误 Error in .Call("MicroCreditLRVBR_TestJacobian", PACKAGE = "MicroCreditLRVBR") : "MicroCreditLRVBR_TestJacobian" not available for .Call() for package "MicroCreditLRVBR" 包框架是用Rcpp.package.skeleton构建的。我用R和C++代码复制,修改了MakEvar来指向

我试着严格按照图中的方向走,但我发现了错误

Error in .Call("MicroCreditLRVBR_TestJacobian", PACKAGE = "MicroCreditLRVBR") : 
  "MicroCreditLRVBR_TestJacobian" not available for .Call() for package "MicroCreditLRVBR"
包框架是用Rcpp.package.skeleton构建的。我用R和C++代码复制,修改了MakEvar来指向包外的一些代码,更新了描述链接到RCPPEGIGN,并运行了CixIsAcess属性。然后我运行R CMD build来创建一个.gz文件,并运行R CMD INSTALL来安装它。它成功构建并链接,但由于上述错误而终止

我可以看到函数MicroCreditLRVBR_TestJacobian确实是在RcppExports.cpp和RcppExports.R中定义的。我不知道为什么它不能用于。请致电

注意,名称空间包括useDynLibMicroCreditLRVBR和exportPattern^[:alpha:]+


处于当前状态的包的公共副本处于。如有任何帮助,我们将不胜感激。

当您将名称从:

小额信贷

小额信贷

您忘了在中修改包名

e、 g

转到:

useDynLib(MicroCreditLRVBR) 
另外,从上拆下管路1-22。它们应该放在/inst中的演示文件中


最后,使用BH导入boost头文件,并减少Makevars中的绝对路径。

通过删除行解决了问题

jac_test <- TestJacobian()
..和一个库文件R/microcredit_stan_lib.R,它在最外层的环境中有一行

jac_test <- TestJacobian()

通过对jac_测试进行注释并表示歉意,我从另一个私有repo复制了它,并且忘记了更改名称空间文件。但这不是问题所在。旧包名为MicroCreditLRVB,它仍然失败,在将此处的名称空间更改为MicroCreditLRVB后,它仍然失败,如上所述。你的其他观点都被很好地采纳了,我当然会在公布这一方案之前解决它们。现在,我创建这个回购协议只是为了问这个问题,我不认为是他们造成了问题。投票结束这个问题,因为这是一个印刷错误,导致了这个问题在两个地方出现,如下所述。这个问题不是由印刷错误造成的。当我问这个问题时,只有一个印刷错误。实际的解决方法是在我下面的评论中。问题是一个印刷错误:1。命名空间中的包名称和2。在我的帖子中强调的主要内容中包含演示脚本。此外,按原样提供的示例是不可复制的,并且仍然适用于StackOverflow的其他用户。这两项都是要求结束问题的有效标准。
// [[Rcpp::export]]
Rcpp::List TestJacobian() {
  ... do stuff ...
}
jac_test <- TestJacobian()