gpt4 book ai didi

c++ - 了解 Rcpp 插件

转载 作者:行者123 更新时间:2023-11-28 01:19:59 26 4
gpt4 key购买 nike

我正在查看 3.6 of the Rcpp-FAQ 中提供的演示,并且我正在尝试了解如何创建此插件。提供的独立示例是

gslrng <-
'int seed = Rcpp::as<int>(par) ;
gsl_rng_env_setup();
gsl_rng *r = gsl_rng_alloc (gsl_rng_default);
gsl_rng_set (r, (unsigned long) seed);
double v = gsl_rng_get (r);
gsl_rng_free(r);return Rcpp::wrap(v);'

plug <- Rcpp:::Rcpp.plugin.maker(
include.before = "#include <gsl/gsl_rng.h>",
libs = paste("-L/usr/local/lib/R/site-library/Rcpp/lib -lRcpp",
"-Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib",
"-L/usr/lib -lgsl -lgslcblas -lm"))
registerPlugin("gslDemo", plug )
fun <- cxxfunction(signature(par="numeric"), gslrng, plugin="gslDemo")
fun(0)

具体来说,为什么对 paste() 的调用是这样用逗号分隔的?是否应该通过插件处理所有 依赖项(头文件目录、链接器目录和库文件的名称)?

最佳答案

paste() 是基础 R 的 paste() 的普通用法——它创建一个单个 字符串,其中包含所有 链接指令被传递给 libs

对于 include.before 我们不需要它,因为只传递了一个 header 。

我建议您研究代码及其使用以及定义为hereRcppGSL 的实际插件并查看它们如何在诸如 e.g. RcppZiggurat 之类的包中使用。我所说的使用是指在客户端包编译和链接时查看说明扩展到什么。

它看起来非常复杂,但嘿,它已经工作了大约十年:)

关于c++ - 了解 Rcpp 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com