我已经写了一个.cpp文件,我想把它编译成.dll用于R和RCPP。 (不使用内联包)。 我使用的是WinXP和R 2.13.2以及RCPP 0.9.7。我正在使用Rtools 2.14。
如何在minGW的搜索路径中包含Rcpp.h?我不记得我需要包含的文件是在C:\ Program Files \ R \ R-2.13.2 \ library \ Rcpp \ include中。但是,我无法添加“添加”它们到“搜索路径”。
我累了一个临时的“黑客”。我将C:\ Program Files \ R \ R-2.13.2 \ library \ Rcpp \ include的内容复制到minGW的include目录中。编译/链接过程从myfile.cpp到myfile.o,但在编译myfile.dll之前会抛出一堆错误。
我已将C:\ Program Files \ R \ R-R-2.13.2 \ bin \ i386添加到我的PATH中,并且我从WinXP命令提示符调用R CMB SHLIB myfile.cpp。
我该怎么办?
答案 0 :(得分:12)
快速点几点:
MinGW的gcc
和g++
编译器的行为与gcc
系列中的其他编译器一样。这意味着没有“添加到搜索路径”:您使用-I/some/dir
开关添加该路径和目录。同样,-L/some/lib
将该目录添加到链接器路径。
您确实想要使用Makefile
。我们的Rcpp包附带了很多例子;您可以查看Makefile
目录中的ConvolveBenchmarks
。
但你真正想要的是使用所谓的“包”。我们有一个完整的小插图Rcpp-package致力于此。它可以像调用为您创建包的rcpp.package.skeleton()
函数一样简单 - 并且动态库被创建为副作用。
最后,我们将其拼写为Rcpp,而不是RCPP。
rcpp-devel
邮件列表也是一个很好的帮助来源。