Ошибка: отсутствует «ПАКЕТ» аргумент в RcppExport.R?

Я перестроил пакет, который я разрабатываю (и который я не обновляю с одного месяца), и обнаружил, что все мои тесты завершаются с ошибкой:

Error in myCPlusPlusFun(...  :
object 'myPackage_myCPlusPlusFun' not found

Затем я узнал, что аргумент PACKAGE = myPackage отсутствует во всех функциях в моем RcppExports.R файл, смотрите вывод git diff:

 myCPlusPlusFun <- function(X) {
-    invisible(.Call('myPackage_myCPlusPlusFun', PACKAGE = 'myPackage', X))
+    invisible(.Call(myPackage_myCPlusPlusFun, X))

Есть идеи, что случилось? Я думаю, мне нужно иметь

invisible(.Call('myPackage_myCPlusPlusFun', PACKAGE = 'myPackage', X))

автоматически генерируется строка при сборке пакета (?)

Спасибо!

РЕДАКТИРОВАТЬ: у меня теперь есть следующие строки в моем NAMESPACE файл:

exportPattern("^[[:alpha:]]+")
importFrom(Rcpp,evalCpp)
useDynLib(locus, .registration = TRUE)

(плюс некоторые другие imports а также exports).

Мне также пришлось недавно добавить файл C для регистрации динамических символов со следующим содержанием:

#include <R.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>

void R_init_myPackage(DllInfo* info) {
R_registerRoutines(info, NULL, NULL, NULL, NULL);
R_useDynamicSymbols(info, TRUE);
}

этот последний файл все еще нужен?

0

Решение

Да, «все изменилось», потому что R 3.4.0 сделал нас, и мы соответствуем.

Вторая часть, безусловно, в порядке — так должно выглядеть.

Пожалуйста, проверьте это
— у вас есть сгенерированный src/RcppExports.cpp
— у вас есть правильная регистрационная информация в NAMESPACE

За последние несколько недель были обновлены многочисленные пакеты, это обычно работает. Если вы сомневаетесь, возможно, создайте быстрый одноразовый пакет через
Rcpp.package.skeleton() и сравни.

Также обратите внимание, что у нас было два угловых случая, которые нуждались в исправлении, поэтому есть промежуточный выпуск, если он вам нужен (см. Публикацию по rcpp-devel) — но
Я не думаю, что вы делаете.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]