C++ RInside编译错误(可能是由于Rcpp中的屏蔽)
进一步的调查表明(调用#include至少存在问题)是由于Windows 8.1出现了一些问题。当我有机会使用其他操作系统时,我会确认这一点。我的问题被强调为与此帖子中的人基本相同的问题: 我正在实验中,在一个C++应用程序中嵌入一些R代码,用于我正在研究的一个项目。我尝试使用RIN来做这件事,因为从我至少在网上阅读的讨论中,这似乎是最好的方法。p> 设置: 系统:HP Pavilion 操作系统:Windows 8.1 R:3.1.1 Rtools:3.1.0.1942 Rcpp:0.11.0 冲洗液:0.2.11 冲洗液:0.2.11 这是我的PATH变量的相关部分,以防出现错误 编辑:现在已包含完整路径 C:\R\R工具\bin C:\R\R工具\gcc-4.6.3\bin C:\R\R-3.1.1\bin C:\R\R-3.1.1\bin\x64 C:\R\batchfiles\u 0.7-1 C:\Windows\system32 C:\Windows C:\Windows\System32\Wbem C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Program Files\Hewlett-Packard\SimplePass\ C:\Program Files(x86)\ATI Technologies\ATI.ACE\Core Static C:\Perl64\bin C:\MiKTeX 2.9\MiKTeX\bin\ 编辑:原始错误已放在文章的底部。新错误:简化了示例。现在,我在编译时没有错误,但在执行时出现错误-“应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。”我认为这是一个.dll问题-有任何建议(即,我是否应该查看gcc-4.6.3文件夹) 此错误仅在添加“#include”行后发生 使用的代码是:C++ RInside编译错误(可能是由于Rcpp中的屏蔽),c++,r,makefile,rcpp,rinside,C++,R,Makefile,Rcpp,Rinside,进一步的调查表明(调用#include至少存在问题)是由于Windows 8.1出现了一些问题。当我有机会使用其他操作系统时,我会确认这一点。我的问题被强调为与此帖子中的人基本相同的问题: 我正在实验中,在一个C++应用程序中嵌入一些R代码,用于我正在研究的一个项目。我尝试使用RIN来做这件事,因为从我至少在网上阅读的讨论中,这似乎是最好的方法。p> 设置: 系统:HP Pavilion 操作系统:Windows 8.1 R:3.1.1 Rtools:3.1.0.1942 Rcpp:0.11.0
#include <iostream>
#include <RInside.h>
int main()
{
std::cout << "Hello World!";
}
我已经在R终端中安装并运行了Rcpp的一些示例代码,没有任何问题。我曾多次尝试按照安装RInside说明中给出的示例进行操作,但始终未能使其正常工作。当我在示例的标准文件夹中尝试“make-f Makefile.win”时,出现以下错误:
在函数“int main(int,char**)”中:
错误:“Shield”未在此作用域中声明
注:建议的备选方案:
C:/R/R-3.1.1/library/Rcpp/include/Rcpp/protection/Shield.h:29:11:
注:“Rcpp:Shield”
错误:在“>”标记之前应该有主表达式
错误:在“;”之前应为“>”代币
错误:“\加载\模块\调用\未在此作用域中声明”
错误:应为“;”在“>”标记之前
make:[rinside_模块_样本0]错误1
原始代码:
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*-
//
// Simple example showing how to do the standard 'hello, world' using embedded R
//
// Copyright (C) 2009 Dirk Eddelbuettel
// Copyright (C) 2010 Dirk Eddelbuettel and Romain Francois
//
// GPL'ed
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
#if defined(RINSIDE_CALLBACKS)
R.set_callbacks( new Callbacks() );
R.repl() ;
#endif
exit(0);
}
<代码> /-*-模式:C++;c级缩进:4级;c-基本偏移量:4;标签宽度:8-*-
//
//一个简单的示例,演示如何使用嵌入式R执行标准的“hello,world”
//
//版权所有(C)2009德克·埃德尔布埃特尔
//版权所有(C)2010德克·埃德尔布埃特尔和罗曼·弗朗索瓦
//
//GPL'ed
#包括//用于通过冲洗液的嵌入式R
int main(int argc,char*argv[]){
rinsider(argc,argv);//创建一个嵌入式R实例
#如果已定义(RINSIDE_回调)
R.set_回调(newcallbacks());
R.repl();
#恩迪夫
出口(0);
}
您可能有另一个g++在您的路径中。RInside适用于当前或最近的Rcpp标头,包括屏蔽的定义。我非常怀疑你的设置有什么问题。谢谢,我会更仔细地查看路径。顺便说一句,在一天中查看了很多RInside帖子后,您的发帖率/回复时间非常高。谢谢你在我遇到的其他问题上给予的帮助!我在我的道路上找不到任何东西让我认为这是一个重复的g++的问题。我已经把它写进了我的帖子,如果你有时间看的话,你能突出你认为有问题的地方吗?嗯,它对其他人有用。也许你在某处有一个旧版本的Rcpp。我很难说你的问题是什么。很公平,谢谢,无论如何。有点烦我,我会看看我能做些什么。
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4; tab-width: 8; -*-
//
// Simple example showing how to do the standard 'hello, world' using embedded R
//
// Copyright (C) 2009 Dirk Eddelbuettel
// Copyright (C) 2010 Dirk Eddelbuettel and Romain Francois
//
// GPL'ed
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
#if defined(RINSIDE_CALLBACKS)
R.set_callbacks( new Callbacks() );
R.repl() ;
#endif
exit(0);
}