Пакет с Rcpp игнорирует #include C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Пакет с Rcpp игнорирует #include

Сообщение Anonymous »

Я хочу использовать std::stack в функции C++ внутри пакета R. Рассмотрим следующий пример файла C++:

Код: Выделить всё

// [[Rcpp::plugins(cpp20)]]
#include 
#include 

// [[Rcpp::export]]
Rcpp::XPtr stack_c(Rcpp::IntegerVector& v) {
std::stack* s = new std::stack;
s->push(v[0]);
Rcpp::XPtr p(s);
return p;
}
Компиляция вне пакета R с помощью Rcpp::sourceCpp() работает. Однако он не работает внутри пакета R.
Пакет R содержит упомянутый файл C++ и файл Makevars со строкой CXX_STD = CXX20 в каталоге src.< /p>
Файл R в каталоге R вызывает функцию.

Код: Выделить всё

#' @export
stack_r = 1.0.13)
LinkingTo: Rcpp
При попытке установить пакет я получаю следующую ошибку компилятора:

Код: Выделить всё

RcppExports.cpp:14:18: error: 'stack' is not a member of 'std'
14 | Rcpp::XPtr< std::stack > create_stack(Rcpp::IntegerVector& v);
|                  ^~~~~
RcppExports.cpp:5:1: note: 'std::stack' is defined in header ''; did you forget to '#include '?
Я не знаю, почему это происходит. Файл C++ явно содержит строку #include .
Нужно ли мне устанавливать другие флаги компилятора?
Я использую Windows 11 с последними версиями Rtools, R и Rcpp.

Подробнее здесь: https://stackoverflow.com/questions/791 ... lude-stack
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»