Смешение модулей Rcpp и Rcpp::exportC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Смешение модулей Rcpp и Rcpp::export

Сообщение Anonymous »

Я хочу предоставить класс C++ и функцию, которая принимает объекты этого класса в качестве параметра для R. Мне нужно следовать упрощенному примеру. Я создал пакет, используя

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

Rscript -e 'Rcpp::Rcpp.package.skeleton("soq")'
и поместите следующий код в soq_types.h

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

#include 
#include 

class Echo {
private:
std::string message;
public:
Echo(std::string message) : message(message) {}
Echo(SEXP);

std::string get() { return message; }
};

#include 

using namespace Rcpp;

RCPP_MODULE(echo_module) {
class_("Echo")
.constructor()
.method("get", &Echo::get)
;
};

//// [[Rcpp::export]]
void shout(Echo e) {
Rcout  library(Rcpp)
R> suppressMessages(library(inline))
R> library(soq)
R> echo_module  Echo  e  print(e$get())
все в порядке. К сожалению, если я включу Rcpp::export, выполню compileAttributes() и переустановлю, я получу:

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

** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘soq’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/brj/R/x86_64-pc-linux-gnu-library/3.6/00LOCK-soq/00new/soq/libs/soq.so':
/home/brj/R/x86_64-pc-linux-gnu-library/3.6/00LOCK-soq/00new/soq/libs/soq.so: undefined symbol: _ZN4EchoC1EP7SEXPREC
Error: loading failed
Execution halted
ERROR: loading failed
Мой вопрос: как мне заставить оба работать?
Я использую R.3.6.3 и

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

R> sessionInfo()
....
other attached packages:
[1] inline_0.3.15 Rcpp_1.0.4.6
....
Дополнение
Для тех, кто пытается следовать приведенному выше примеру: очень важно, чтобы исходный файл имел точное имя
_types.h. В противном случае автоматически сгенерированный файл RcppExports.cpp не будет #include, и, следовательно, класс Echo не будет там определен. Это приведет к ошибке компиляции.


Подробнее здесь: https://stackoverflow.com/questions/622 ... rcppexport
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка Rcpp, изучение Rcpp и C++ на Mac
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Вызов функции R из C++ без Rcpp::export
    Anonymous » » в форуме C++
    0 Ответы
    85 Просмотры
    Последнее сообщение Anonymous
  • Смешение документа LaTeX с пакетом Python pylatexenc
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как мне создать предварительно скомпилированные файлы для модулей и модулей заголовков с помощью gcc и make?
    Гость » » в форуме C++
    0 Ответы
    91 Просмотры
    Последнее сообщение Гость
  • Java jlink с множеством автоматических модулей и/или модулей без имени
    Anonymous » » в форуме JAVA
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous

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