Связывание на другой пакет с r встроенный
Вопрос
У меня есть функция 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 все еще держит. У вас есть три высококачественных ответа там сегодня. Так почему бы не использовать его. Я думаю, что у нас есть примеры для этого в архивах рассылки.