我正在创建一个R包,它使用RcppArmadillo也具有c++代码。功能之一需要优化功能。当前,我将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++方面的经验非常有限,所以我不知道该怎么做。谁能帮我这个?谢谢!

最佳答案

关于over at the nloptr repo的讨论颇为活跃。

您更深层的问题是nlopt需要链接,这会使您陷入与操作系统的依赖关系,而这比纯Rhead的纯 header 库(如RcppArmadillo)更难建立。您将需要了解这一较难的步骤,并且没有简单的规则。 RcppGSL软件包(以及小插图和Rcpp Book章节)是一个大致等效的示例。

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

关于c++ - 如何直接在Rcpp包中从nloptr包调用C函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48447898/

10-12 19:20