使R功能在同一个包中识别C功能?

hat*_*rix 3 c r

我下载了一个.tgz文件,其中包含R /中的R脚本和src /中的单个C文件.

R函数以这种方式调用C函数:

Mainfn<-function(x) {
  output <- matrix(nrow(x),ncol(x));
  output<-.C("myCfn",x=as.double(x),output=as.double(output),
             PACKAGE='mypackage')
  return(output)
}
Run Code Online (Sandbox Code Playgroud)

在C文件中,以这种方式定义的函数[...]表示一系列长的计算.

#include <R.h>
#include <Rmath.h>
#include <math.h>
/*----------------------------------------------------------*/
void myCfn(double *x,double *output){
  [...]
}
Run Code Online (Sandbox Code Playgroud)

当我安装包时R CMD INSTALL mypackage.tgz,Mainfun()出错:"myCfn" not available for .C() for package "mypackage".我想知道如何让我的函数识别C文件中定义的这个函数?

Kev*_*hey 5

我最好的猜测:包中需要useDynLib(<pkg_name>)NAMESPACE文件.