如何直接在Rcpp包中从nloptr包调用C函数?

时间:2018-01-25 16:40:24

标签: c++ c r rcpp nlopt

我正在使用RcppArmadillo创建一个也包含c ++代码的R包。其中一个功能需要优化功能。目前,我将nloptr::nloptr函数导入c ++,然后使用它来优化函数。代码在这里:https://github.com/daijiang/phyr/blob/master/src/pglmm_gaussian.cpp#L267-L282;也是244-245行。

因为nloptr::nloptr的主干是用C语言编写的,所以用c ++调用R函数似乎不是最好的方法,可能会减慢速度。理想情况下,我们应该直接在c ++文件中调用它的C函数。但鉴于我对c / c ++的经验非常有限,我不知道该怎么做。谁能帮我这个?谢谢!

1 个答案:

答案 0 :(得分:1)

over at the nloptr repo进行了一些积极的讨论。

你更深层次的问题是nlopt需要链接,这会让你进入操作系统依赖,这比依赖纯粹的头文件库(如RcppArmadillo)更难设置..你需要了解更难的步骤,并且有没有简单的规则。 RcppGSL包(和插图和Rcpp Book章节)是一个大致相同的例子。

几个月后编辑:在CRAN上使用新的nloptr版本,我们编写了一个演示包RcppNLoptExamples(现在也在CRAN上),展示了如何使用nlopt从C / C ++代码通过Rcpp从R。

调用