我们正在使用Rcpp用C++编写一个相当大的模拟。我们希望重构代码,并将它使用的一些C++类放在单独的包中,因为我们希望在其他包的C++代码中也使用这些类。有可能这样做吗?
我已经看到了// [ Rcpp::接口( R,cpp)]属性,但据我的理解,这只适用于返回对象的函数(可以由R.RCPP模块解释),Rcpp模块可以向R公开C++类,但也可以将C++类公开给其他C++代码吗?
发布于 2019-11-22 18:19:33
是。有几种方法。最简单的是如果C++库是标头的话,因为它可以嵌入到inst/include
中,就像@duckmayr所指出的那样。
在这里可以找到一个缩小的只包含标头的示例:
https://github.com/r-pkg-examples/rcpp-shared-cpp-functions
另外,如果代码应该在.cpp
文件之间的同一个包中共享,那么另一种方法是在.cpp
文件旁边使用src/
中的头文件。在这里可以找到这样的一个例子:
https://github.com/r-pkg-examples/rcpp-headers-src
如果您需要src/
目录中的子文件夹,那么对于单个包来说就需要更多的子文件夹。
https://stackoverflow.com/questions/58999192
复制相似问题