簡體   English   中英

是否可以在 R 包之間共享 C++ 類?

[英]Is it possible to share C++ classes between R-Packages?

我們正在使用 Rcpp 在 C++ 中編寫一個相當大的模擬。 我們想重構代碼並將它使用的一些 C++ 類放在單獨的包中,因為我們也想在其他包的 C++ 代碼中使用這些類。 是否有可能做到這一點?

我見過 // [[Rcpp::interfaces(r, cpp)]] 屬性,但據我了解,這僅適用於返回可由 R 解釋的對象的函數。 Rcpp 模塊可以將 C++ 類暴露給 R,但也可以將 C++ 類暴露給其他 ZF126F87C9FDCFEE87F3 代碼

是的。 有幾種方法。 最簡單的是,如果 C++ 庫是僅標頭,因為它可以嵌入到inst/include中,正如@duckmayr 指出的那樣。

可以在此處找到僅包含標頭的縮小示例:

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


另一方面,如果代碼應該在.cpp文件之間的相同 package 中共享,那么另一種方法是在.cpp文件旁邊的src/中使用 header 文件。 這方面的一個例子可以在這里找到:

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

如果您需要src/目錄中的子文件夾,那么單個 package 會涉及更多。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM