C++ RInside编译错误(可能是由于Rcpp中的屏蔽)

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至少存在问题)是由于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”行后发生

使用的代码是:

#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);
}