在Windows

时间:2016-02-08 15:41:10

标签: c r windows

我正在尝试按照此网页上的说明在Windows中链接R和C

http://mcglinn.web.unc.edu/blog/linking-c-with-r-in-windows/

我将R,RTOOLS和TurboC4都放在C盘的不同文件夹中。我的系统是64位,但我已经在32位和64位R上尝试过它。

我在C

中编写了以下代码
#include <R.h>

void hello(int *n)
 { int i;
    for(i=0; i<=*n; i++){
     Rprintf("hello, world!this is hell though I'm enjoying it\n");
     }
 }

并将名称WORLD.C保存在单独的文件中,其路径为    C:\ TurboC4 \ TC \ BIN

我还写了以下R代码

hello2 <- function(n) {
.C("hello", as.integer(n))
 }

hello2(5)

并将其保存为名称WORLD.R。

现在我必须准备好我的窗户。我从这里下载了RTools33.exe https://cran.r-project.org/bin/windows/Rtools/

并通过此命令手动设置环境变量

PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\Program Files\R\R-3.2.2\bin\i386; 

然后重新安装系统

在R中调用C代码之前,我必须在cmd中编译C代码。我编写以下命令来更改保存WORLD.C的目录

cd C:\Users\TurboC4\TC\BIN

哪个成功,但是当我尝试编译

C:\Users\TurboC4\TC\BIN> R CMD SHLIB WORLD.c

我收到以下错误。 “'R'不被认为是内部或外部命令,可操作”。我也尝试在C中编译WORLD.C并得到这两个错误。 “无法打开#include R.h&gt;”和“功能Rprintf应该有一个原型”。

设置环境是一个问题 我认为这是我面临问题的地方。我已经检查过Rtools33.exe与R 3.2.x及更高版本兼容。但是我在CMD上遇到了同样的错误。我尝试过不同的路径环境,并尝试使用R-3.2.2,R-3.2.0,2.15.3,2.15.0等不同的R版本。但是当我写作

在任何这些R版本中的

“install.packages(”RTools33“),我收到以下警告信息

Warning in install.packages :package ‘RTools33’ is not available (for R version    
2.15.0)" 

使用不同R的原因是当您下载RTOOLS文件夹时,有一个版本文件显示“Rtools Collection 3.3.0.1959”。所以我认为这可能是一个兼容性问题。

Github页面上有一些说明 https://github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows “为了安装Rtools,需要注意我们可以编辑系统PATH的步骤,以便R可以使用Rtools中包含的C ++编译器。如下面的步骤所示,我们需要选中此选项(不要手动编辑系统路径。选中该选项后,系统路径将被编辑为包含安装过程中Rtools的重要文件夹。“

所以,我已经卸载了RTools,在重新安装时我也检查了这个选项按钮,然后重试但是全部都是静止的。

我检查了Sys.getenv('PATH')并得到了

c:\\\\\\\\Rtools\\\\\\\\gcc-4.6.3\\\\\\\\bin;c:\\\\\\\\RTools\\\\\\\\bin;

我也尝试过设置此路径     控制面板 - &gt; useraccountandfamilysafety-&gt; Useraccounts-&gt;改变我的
    环境变量  然后使用上面的PATH创建新变量。 我仍然无法将R指向C ++编译器。任何人都可以弄清楚我的错误是什么?

1 个答案:

答案 0 :(得分:-1)

现在解决了这个问题。定义环境变量只是一个小错误。正确的定义如下。

c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;c:\Program Files\R\R-3.2.2\bin\i386;