我是R的新手。我想构建一个R包,它将使用.Call()调用C ++函数。 我有一个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文件夹?
我想构建一个独立于os的包,有没有办法用dyn.load做到这一点?
这可能是一个非常愚蠢的问题,pkgname和libname从哪里获取输入?
非常感谢你的帮助。