首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Rcpp插件

理解Rcpp插件
EN

Stack Overflow用户
提问于 2019-07-03 22:23:38
回答 1查看 183关注 0票数 0

我正在查看3.6 Rcpp-常见问题提供的演示,并试图了解这个插件是如何创建的。提供的独立示例如下

代码语言:javascript
复制
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()的调用是以逗号分隔的?是否应该通过处理所有依赖项(头文件目录、链接器目录和库文件名)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 00:16:23

paste()是基R的paste()的一种普通用法--它创建一个包含传递给libs的所有链接指令的字符串。

对于include.before,我们不需要这样做,因为只有一个标头被传递。

我建议您研究代码及其使用,以及RcppGSL的实际插件,即定义为这里的插件,并了解它们如何在包(如RcppZiggurat )中使用。我的意思是,当客户端包编译和链接时,我的意思是看到指令扩展到什么程度。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56878616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档