Связывание на другой пакет с r встроенный

StackOverflow https://stackoverflow.com/questions/3679761

  •  02-10-2019
  •  | 
  •  

Вопрос

У меня есть функция C ++ / RCPP, которые мне нужно компилировать и ссылаться на пакет POMP, чтобы получить доступ к генератору случайного номера. Я могу заставить файл заголовка включен, но как добраться до ссылки на скомпилированный код?

CppColonized<-cxxfunction(
  sig=signature(x="numeric", t="numeric", params="numeric", dt="numeric"),
  plugin='Rcpp',
  includes = sprintf("#include <Rmath.h>\n#include <math.h>\n#include\"%s\"", 
    base:::system.file("include/pomp.h",package="pomp")),
  body=Code,verbose=T)

Код использует функцию Reulermultinom в пакете POMP, и когда я оцениваю, это дает ошибку

Неопределенная ссылка на `reulermultinom (int, double, double *, двойной, двойной *)

Выданные команды

G ++ -I "C: /progra ~1/r/r-211-1.1/Include" -i "C: /progra~1/r/r-211-1.1/Library/rcpp/include" -O2 -Wall - C File2F752742.CPP -O File2F752742.O G ++ -Shared -s -static-libgcc-o file2f752742.dll tmp.def file2f752742.o c: /prograra~1/r/r-211-1.1/Library/rcpp/lib/ librcpp.a -lc: /progra ~1/r/r-211-1.1/bin -lr

Похоже, что должен быть -lpomp или что-то в этом роде.

Это было полезно?

Решение

Пожалуйста, смотрите документацию для cxxfunction() а также getPlugin() в пакете в линию.

Вам нужно заполнить правильно -i ... и -L ... Флаги. То sprintf() Hack помогает для заголовка, он не дает вам местоположение библиотеки.

Кроме того, вчерашний намек на использование RCPP-Devel все еще держит. У вас есть три высококачественных ответа там сегодня. Так почему бы не использовать его. Я думаю, что у нас есть примеры для этого в архивах рассылки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top