如何使用R和RCPP编译dll?

pow*_*wer 4 c++ mingw r rcpp

我写了一个.cpp文件,我想把它编译成.dll用于R和RCPP.(不使用内联包).我使用的是WinXP和R 2.13.2以及RCPP 0.9.7.我正在使用Rtools 2.14.

  1. 如何在minGW的搜索路径中包含Rcpp.h?我不记得我需要包含的文件是在C:\ Program Files\R\R-2.13.2\library\Rcpp\include中.但是,我无法添加"添加"它们到"搜索路径".

  2. 我累了一个临时的"黑客".我将C:\ Program Files\R\R-2.13.2\library\Rcpp\include的内容复制到minGW的include目录中.编译/链接过程从myfile.cpp到myfile.o,但在编译myfile.dll之前会抛出一堆错误.

我已将C:\ Program Files\R\R-2.13.2\bin\i386添加到我的PATH中,并且我从WinXP命令提示符调用R CMB SHLIB myfile.cpp.

我该怎么办?

Dir*_*tel 12

几点快速点:

  1. gccg++来自MinGW编译器使用起来就像是从其他编译器gcc系列.这意味着没有"添加到搜索路径":您使用该-I/some/dir开关添加该路径和目录.同样,-L/some/lib将该目录添加到链接器路径.

  2. 真的想用一个Makefile.我们的Rcpp软件包附带了很多例子; 你可以看一下MakefileConvolveBenchmarks目录中.

  3. 但你真正想要的是使用所谓的"包".我们有一个专门用于此的整个插图Rcpp包.它可以像调用rcpp.package.skeleton()为您创建包的函数一样简单- 并且动态库被创建为副作用.

  4. 如果这一切都太混乱,请先尝试熟悉内联.使用verbose=TRUE参数来查看内联如何构建动态库!

  5. 最后,我们拼写Rcpp,而不是RCPP.

rcpp-devel邮件列表是帮助一个很好的来源了.