是否可以在R-Packages之间共享C ++类?

时间:2019-11-22 17:37:01

标签: r rcpp r-package

我们正在使用Rcpp用C ++编写一个相当大的模拟。我们想重构代码并将它使用的某些C ++类放在单独的程序包中,因为我们也希望在其他程序包的C ++代码中使用这些类。 是否有可能做到这一点?

我已经看到了// [[[Rcpp :: interfaces(r,cpp)]]属性,但是据我所知,这仅适用于返回可以由R解释的对象的函数。Rcpp模块可以将C ++类公开给R,但也可以将C ++类公开给其他C ++代码吗?

1 个答案:

答案 0 :(得分:3)

是的。有几种方法。最简单的方法是C ++库是仅标头的,因为@duckmayr指出它可以嵌入inst/include中。

可在此处找到按比例缩小的仅标头包含的示例:

https://github.com/r-pkg-examples/rcpp-shared-cpp-functions


另一方面,如果应在.cpp文件之间的同一程序包中共享代码,则另一种方法是使用src/文件旁边.cpp中的头文件。可以在这里找到一个示例:

https://github.com/r-pkg-examples/rcpp-headers-src

如果您需要src/目录中的子文件夹,那么对于单个软件包,这涉及的更多。

https://github.com/r-pkg-examples/rcpp-headers-subdirs