使用适用于Linux和Windows的C代码构建R包

时间:2012-10-23 04:38:48

标签: r

我一直在做研究,我无法弄清楚如何构建我的R包,它调用C函数,以便它可以在Windows和Linux环境中工作。我正在Linux机器上构建软件包。

我有两个C文件,一个.C和两个.C,我使用package.skeleton(...)后将这两个文件放在src目录中。在命名空间文件中,我使用命令:useDynLib(one,two)。它是否正确?或者我是否需要输入实际的函数名称而不是文件名?我是否需要导出函数名称?

我是否需要将.so文件放在src目录中或自动创建?我很担心它不适用于需要.dll文件的Windows机器。

你可以看到我有点困惑,谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

标准R手册之一是Writing R Extensions。本手册的一部分是5 System and foreign language interfaces部分。这可能会回答您的大部分问题。关于动态链接库(dllso),它们是即时构建的。您开发包,包括C代码。一旦您想从源代码安装库(例如使用R CMD INSTALL spam),或创建二进制分发版,C代码将被编译到相应的库文件中。

答案 1 :(得分:4)

面对类似的头痛,我与Rcpp结合使用C ++。 Rcpp在编译软件包时会为您解决所有问题:

http://dirk.eddelbuettel.com/code/rcpp.html

还有一个关于如何使用Rcpp构建包的整个小插图:

http://dirk.eddelbuettel.com/code/rcpp/Rcpp-package.pdf