我正在创建一个我打算提交给 CRAN 的 R 包,它有一个调用用 C 编写的例程的函数。如何以独立于平台的方式在 R 函数中加载编译的 C 例程?我能够使我的包在我的基于英特尔的 Mac 上工作:
function(mydata)
{
dyn.load(file.path(.Library,"mypkg/libs/i386",paste("mypkg", .Platform$dynlib.ext, sep="")))
try(
output <- .C("myfunc_cversion",
in_data = as.double(mydata),
res_data = as.double(res),
PACKAGE = "mypkg")
)
result <- as.matrix(output$res_data)
return(result)
}
问题是对 dyn.load 的调用,我无法弄清楚如何以可移植的方式为我安装的包指定共享库的完整路径。
除了我应该使用的 .Library 之外,R 中是否还有另一个变量,或者在这种情况下是否有比 dyn.load 更好的功能?