【问题标题】:Linking C and R in Windows在 Windows 中链接 C 和 R
【发布时间】:2016-02-08 15:41:09
【问题描述】:

我正在尝试按照此网页上的说明在 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>”和“函数 Rprintf 应该有原型”。

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

"install.packages("RTools33") 在任何这些 R 版本中,我收到以下警告消息

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

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

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

所以,我已经卸载了 RTools,并且在重新安装时我也检查了此选项按钮,然后重试,但一切正常。

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

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

我也尝试过设置这个路径 控制面板->用户帐户和家庭安全->用户帐户->更改我的
环境变量 然后使用上面的 PATH 创建新变量。 我仍然无法将 R 定向到 C++ 编译器。谁能弄清楚我的错误是什么?

【问题讨论】:

    标签: c r windows


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多