创建嵌入式R实例时执行卡住了

时间:2017-08-10 09:19:47

标签: r qt rinside

我正在使用RInside将R集成到Qt应用程序中。目前,我正在尝试运行RInside包中的Qt示例。我能够构建示例,但在创建嵌入式R实例时执行会被卡住。

#include <QApplication>
#include "qtdensity.h"

int main(int argc, char *argv[])
{
    qDebug() << "First";
    RInside R(argc, argv);          // Execution halts at this point
    qDebug() << "Second";
    QApplication app(argc, argv);
    QtDensity qtdensity(R);     // pass R inst. by reference
    return app.exec();
}

创建嵌入式R实例时执行陷入困境,并且没有错误。

使用的工作环境

RInside Package:发布0.2.14

Linux版本:红帽企业Linux客户端版本5.8(Tikanga)

R:3.1.1

Rcpp lib:0.11.4

RInside lib:0.2.14

Qt:4.7.4

非常感谢任何帮助或建议。感谢。

更新:

现在,我在rinside_sample0.cpp中尝试一个更简单的例子。

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

using namespace std;

int main(int argc, char *argv[]) {
cout << "Starting \n";
RInside R(argc, argv);              // create an embedded R instance
cout << "R instance created\n";

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

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

exit(0);

}

此代码在运行时也会卡住。它被卡在RInside R(argc, argv);

现在,当我将R_HOME设置为我的R目录时,执行会给我这个错误:

cannot find system Renviron
Fatal error: unable to open the base package

编译日志:

g++ -I/pkg/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/include -I/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include -I/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/include -g -O2 -Wall -I/usr/local/include   rinside_sample0.cpp  -Wl,--export-dynamic -fopenmp  -L/pkg/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/lib -lR -lrt -ldl -lm -licuuc -licui18n -Wl,-rpath,"/pkg/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5"/lib -L/pkg/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/lib -lRblas -L/pkg/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/lib -lRlapack  -L/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/lib -lRInside -Wl,-rpath,/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/lib -o rinside_sample0
In file included from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/RcppCommon.h:34,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp.h:27,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/include/RInsideCommon.h:38,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/include/RInside.h:26,
                 from rinside_sample0.cpp:10:
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:35: warning: ignoring #pragma push_macro
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:40: warning: ignoring #pragma push_macro
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:45: warning: ignoring #pragma push_macro
In file included from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/RcppCommon.h:34,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp.h:27,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/include/RInsideCommon.h:38,
                 from /pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/RInside/include/RInside.h:26,
                 from rinside_sample0.cpp:10:
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:60: warning: ignoring #pragma pop_macro
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:64: warning: ignoring #pragma pop_macro
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/r/headers.h:68: warning: ignoring #pragma pop_macro
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/Date.h: In member function ‘void Rcpp::Date::update_tm()’:
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/Date.h:108: warning: converting to ‘time_t’ from ‘double’
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/Date.h: In function ‘Rcpp::Date Rcpp::operator+(const Rcpp::Date&, int)’:
/pkg/.site/pkgs05/OSS-R-/3.1.1/x86_64-linux2.6-glibc2.5/lib64/R/library/Rcpp/include/Rcpp/Date.h:139: warning: converting to ‘time_t’ from ‘double’

1 个答案:

答案 0 :(得分:0)

感谢Dirk的建议。我使用的R installation是基于RHEL6构建的,我正在RHEL5上工作。所以,我做了R包的全新安装。我在R 3.1.3计算机上安装了RInside与兼容的RcppRHEL5库。安装修复后,示例开始运行。

使用的工作环境

RInside Package:发布0.2.14

Linux版本:红帽企业Linux客户端版本5.8(Tikanga)

R:3.1.3

Rcpp lib:0.12.12

RInside lib:0.2.14

Qt:4.7.4

相关问题