Я очень плохо знаком с R. Я хотел бы создать пакет R, который будет вызывать функцию C ++, используя .Call ().У меня есть файл NAMESPACE с
useDynLib(mypkg)
, где mypkg также является именем функции моего кода на c ++.
Это работает, если я использую эту строку в начале файла mypkg.R:
dyn.load("src/mypkg.so")
, но вместо этого я хочу использовать library.dynam, поэтому в файле zzz.R я помещаю
.onLoad<-function(libname, pkgname)
{
library.dynam("mypkg", pkgname, libname)
}
. При проверке пакета выдается ошибка:
...
Error in .Call("mypkg", PACKAGE = "mypkg") :
C symbol name "mypkg" not in DLL for package "mypkg".
Error : unable to load R code in package 'mypkg'
...
Похоже, файл * .so сгенерирован не в том месте?Почему не создается папка / libs?
Я бы хотел сделать пакет независимым от ОС, есть ли способ сделать это с помощью dyn.load?
И это может быть очень глупый вопрос, откуда взялись pkgname и libname?получить их вклад от?
Большое спасибо за вашу помощь.