如何从C ++调用R代码

时间:2013-07-17 07:26:35

标签: rcpp rinside

我尝试在C ++(Qt创建者)中包含R代码。为了熟悉软件包Rcpp,RInside和R源代码R-3.0.1,我尝试运行以下示例:

#include <QCoreApplication>
#include<iostream>
#include<Rcpp.h>
#include <RInside.h>                    // for the embedded R via RInside

int main(int argc, char *argv[]) {

RInside R(argc, argv);              // create an embedded R instance

R["txt"] = "Hello, world!\n";   // assign a char* (string) to 'txt'

R.parseEvalQ("cat(txt)");           // eval the init string, ignoring any returns

exit(0);
}

第一个问题:

文件string.h来自包Rcpp,但它总是生成一个批次(130!)错误,如:

  • 'internal未命名类型'
  • 'StringProxy没有命名类型等。

它出了什么问题?

第二个问题:

在.pro文件中,我必须分别包含所有包的子文件夹,如:

  • INCLUDEPATH + =“W:\ hesm \ Private \ Private \ Qt files \ ConnectToR \ Rcpp \ include \ Rcpp \ module”

是否可以在一个引号中包含一个包含所有子文件夹的文件夹(包)?

由于

1 个答案:

答案 0 :(得分:1)

你做错了。您引用的代码是来自RInside软件包的examples/standards/rinside_sample0.cpp文件的逐字

恰好在examples/qt/目录中还有一个完整的Qt示例(尽管构建了一个Qt应用程序而不是命令行应用程序)。你应该做

  qmake && make

并且构建了二进制文件---因为 all 所需的逻辑位于.pro文件中。

您的问题实际上是关于如何使用Qt Creator / Qt构建工具,并且与Rcpp或RInside本身无关。

我们提供的示例都按照记录和预期进行。构建它们,查看make执行的内容,并推断出使用Qt Creator所需的内容(这是一个很好的工具,但不是开箱即用的R支持的工具)。如果你想使用它,你需要在本地适应它。