5

我已经编写了一个 .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 的包含目录中。编译/链接过程从 myfile.cpp 到 myfile.o,但在编译 myfile.dll 之前会抛出一堆错误。

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

我应该做什么?

4

1 回答 1

12

几个要点:

  1. MinGW的gccg++编译器的行为与该gcc系列的其他编译器一样。这意味着没有“添加到搜索路径”:您使用-I/some/dir开关添加该路径和目录。同样,-L/some/lib将该目录添加到链接器路径。

  2. 真的想使用Makefile. 我们的Rcpp包附带了很多示例;您可以查看目录Makefile中的。ConvolveBenchmarks

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

  4. 如果这一切都太令人困惑,请先尝试熟悉内联。使用verbose=TRUE参数看看inline是如何构建动态库的!

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

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

于 2011-10-12T05:29:30.267 回答