如何在独立的C++程序中使用Rcpp代码?

问题描述 投票:0回答:1

我是一名统计学家,与其他领域的科学家合作很多,他们不使用 R,而主要使用 C++。有时我想给他们一个可以运行但也使用 R 功能的 C++ 程序。这是一个玩具示例

#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int mytry() {
  NumericVector x(5);
  x = rnorm(5);
  Rcout<<mean(x)<<"\n";
  return 0;
}

现在,当我尝试在 C++ 编译器中运行它时(我使用的是 Code::Block),我收到如下错误消息:

对“Rprintf”的未定义引用

以及其他类似错误的列表。

如果这是一个愚蠢的问题,我深表歉意,但我不是 C++ 专家。我自己只通过 Rcpp 使用它来用 C++ 替换小的 R 代码片段,这样它们运行得更快。

c++ rcpp
1个回答
0
投票
一般来说你不能,因为

Rcpp

 被设计为构建为 R 扩展包,它可以 
always 假设从 R 调用,因此与许多 R 符号链接。

这里有两个基本选项:第一个也是更常见的一个是将 C++ 实现分离为“纯 C++”,您可以将其交给您的同事,以及一些剩余的“粘合剂”以从 R 调用/返回到 R。可能是你最好的选择——想想,

例如,用std::vector<double>

而不是
Rcpp::NumericVector

第二个是将 R 实际粘贴到您的 C++ 应用程序中,您可以使用 CRAN 包

RInside,这也大量使用 Rcpp

。这两种方法都有示例(您可以通过在搜索词中添加 
Rcpp
 来在 3000 个 
[rcpp]
 答案中进行搜索)以及在 
Rcpp Gallery 等地方。

© www.soinside.com 2019 - 2024. All rights reserved.