我们正在使用Rcpp用C ++编写一个相当大的模拟。我们想重构代码并将它使用的某些C ++类放在单独的程序包中,因为我们也希望在其他程序包的C ++代码中使用这些类。 是否有可能做到这一点?
我已经看到了// [[[Rcpp :: interfaces(r,cpp)]]属性,但是据我所知,这仅适用于返回可以由R解释的对象的函数。Rcpp模块可以将C ++类公开给R,但也可以将C ++类公开给其他C ++代码吗?
答案 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/
目录中的子文件夹,那么对于单个软件包,这涉及的更多。