在Rcpp中使用外部c库

时间:2013-12-08 23:47:06

标签: linker rcpp

我想在我的Rcpp代码中使用对应于R库BayesLogit rpg(http://www.inside-r.org/packages/cran/BayesLogit/docs/rpg)的c函数“rpg_hybrid”。我已将LogitWrapper.h和库BayesLogit.so包含在链接阶段。 GCC仍然找不到rpg_hybrid。

2 个答案:

答案 0 :(得分:2)

虽然您似乎已经解决了问题,但我会在开发您可能想要的R包时提供答案。发布到CRAN。


基本上,BayesLogit的作者需要明确地为其他包作者提供此类例程。这在section 5.4.2 of R-exts中有所描述。从我从源代码中看到的情况来看,这还没有完成,所以你将无法以便携式的方式调用该软件包中的本机C / C ++代码,因此CRAN可以接受。

您的选择是:

  1. 联系包裹作者并询问他们是否可以提供此例程,
  2. 将来源复制到您自己的包中并提供归因;如果这样做,请确保您使用的许可证与他们的许可证兼容。
  3. 顺便说一下,R​​cpp还有一些工具,只能以标题方式提供源代码。包装作者可能会说服使用Rcpp Attributes来提供一些例程,因为它提供了一种简单的机制,允许其他作者在包中使用C ++代码;见第3.5节。

答案 1 :(得分:1)

班上的一名学生向我询问了你的问题。虽然我没有时间去做Kevin / Dirk建议的事情,但我已经在我的Github页面上发布了一个更加用户友好的C ++ API。 见https://github.com/jgscott/helloPG

这是一个R包骨架的形式,可以很容易地修改。我希望在过渡期间这将是一个可行的备用,直到我们可以适当地修改BayesLogit。

-James