Как вызвать функции C из пакета nloptr непосредственно в пакете Rcpp?

Я создаю пакет R, который также имеет коды C++, используя RcppArmadillo. Одна из функций должна оптимизировать функцию. В настоящее время я импортировал nloptr::nloptr функция в C++, а затем использовать его для оптимизации функции. Код здесь: https://github.com/daijiang/phyr/blob/master/src/pglmm_gaussian.cpp#L267-L282; также строка 244-245.

Потому что костяк nloptr::nloptr написано на C, вызов функции R на C++ кажется не лучшим способом и, вероятно, замедлит работу. В идеале, мы должны вызывать его функции C непосредственно в файле C++. Но я не знаю, как это сделать, учитывая мой очень ограниченный опыт работы с c / C++. Кто-нибудь может мне с этим помочь? Спасибо!

1 ответ

В репозитории nloptr об этом довольно активно говорят.

Ваша более глубокая проблема заключается в том, что nlopt требуется связывание, которое приводит вас к зависимости от операционной системы, которую сложнее настроить, чем к чистой библиотеке только для заголовков, такой как RcppArmadillo., Пакет RcppGSL (и виньетка, и глава Rcpp Book) являются примерно эквивалентным примером.

Другие вопросы по тегам