2017-08-10 33 views
0

我正在使用RInside将R集成到Qt应用程序中。目前,我正在尝试运行Rinside软件包中的Qt示例。我能够构建该示例,但创建嵌入式R实例时执行会停滞。创建嵌入式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套餐:发布0.2.14

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

R:3.1.1

Rcpp库:0.11.4

边缘库: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’ 
+0

几周前我上次重访时,仍然在Ubuntu上工作。你需要提供更多的细节,我也会建议尝试一些更简单的例子。 –

+0

@DirkEddelbuettel嗨德克,我现在试图在标准文件夹内运行rinside_sample0示例,但仍面临同样的问题。我已经用更多的细节更新了这个问题。请看一看。 – Ayush

+1

您的构建日志只是部分。我怀疑R可能不会构建为共享库,从而无法在该平台上进行嵌入。 –

回答

0

谢谢德克的建议。我使用的R installation建立在RHEL6上,我正在研究RHEL5。所以,我做了一个R包的全新安装。我在我的RHEL5机器上安装了R 3.1.3和兼容的RInsideRcpp库。安装修复程序后,示例开始运行。

工作环境中使用

RInside套餐:发布0.2.14

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

R:3.1.3

Rcpp lib:0.12.12

边缘库:0.2.14

Qt:4.7。4