3

我想将 R 嵌入到 C++ 程序中。所以我也安装了 R、Rcpp 和 RInside。但是在 UNIX 中使用 g++ 编译时出现很多“未定义的引用”错误。我给出的编译命令是

g++ -I/path/to/R/include -I/path/to/Rcpp/include -I/path/to/RInside/include -L/path/to/R/libs -L/path/to/Rcpp/ libs -L/path/to/RInside/libs test.cpp -lRlapack -lRcpp -lRblas -lRInside"

测试.cpp:

#include <RInside.h>                   
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);
}

错误:

Undefined reference to R_ClassSymbol
Undefined reference to R_NilValue

我收到与 R 变量类似的 110 个未定义错误。我已将 R 和其他软件包安装到我自己的位置而不是默认位置。我现在被这个错误困住了 2 天。我似乎做的一切都是正确的,比如链接等。在此先感谢。

4

3 回答 3

2

RInside在目录中附带了十多个示例examples/standard/(还有一些您现在可以忽略的 MPI 示例)。尝试构建这些,并尝试从他们的 Makefile 进行调整。

您的链接错误消息指向 R 中缺少的符号——并且您显示的命令缺少该-lR部分。尝试使用(工作)示例作为指南添加它。

于 2011-01-13T16:22:44.723 回答
1

(在正确输入代码后更新,以便我可以阅读它!)

有关一些有用的示例,请参阅http://dirk.eddelbuettel.com/code/rinside.html

于 2011-01-13T16:12:57.303 回答
1

终于明白了....在另一个系统中使用 -enable-R-shlib 重新安装了所有内容。示例工作正常。我现在可以进行一些实施了。谢谢

于 2011-01-17T06:40:48.790 回答