gpt4 book ai didi

r - 内联函数代码无法编译

转载 作者:行者123 更新时间:2023-12-04 14:13:06 26 4
gpt4 key购买 nike

我正在尝试使用 inline图书馆。

我尝试了 http://adv-r.had.co.nz/C-interface.html 给出的第一个例子

library(inline)

add <- cfunction(signature(a = "integer", b = "integer"), "
SEXP result;

PROTECT(result = allocVector(REALSXP, 1));
REAL(result)[0] = asReal(a) + asReal(b);
UNPROTECT(1);

return(result);
")

我收到以下错误:
Warning message:
running command 'make -f "C:/PROGRA~1/R/R-30~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="file21e05c17451a.dll" WIN=64 TCLBIN=64 OBJECTS="file21e05c17451a.o"' had status 127

ERROR(s) during compilation: source code errors or compiler configuration errors!

Program source:
1: #include <R.h>
2: #include <Rdefines.h>
3: #include <R_ext/Error.h>
4:
5:
6: extern "C" {
7: SEXP file21e05c17451a ( SEXP a, SEXP b );
8: }
9:
10: SEXP file21e05c17451a ( SEXP a, SEXP b ) {
11:
12: SEXP result;
13:
14: PROTECT(result = allocVector(REALSXP, 1));
15: REAL(result)[0] = asReal(a) + asReal(b);
16: UNPROTECT(1);
17:
18: return(result);
19:
20: warning("your C program does not return anything!");
21: return R_NilValue;
22: }
Error in compileCode(f, code, language, verbose) :
Compilation ERROR, function(s)/method(s) not created! Warning message:
running command 'make -f "C:/PROGRA~1/R/R-30~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-30~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="file21e05c17451a.dll" WIN=64 TCLBIN=64 OBJECTS="file21e05c17451a.o"' had status 127
In addition: Warning message:
running command 'C:/PROGRA~1/R/R-30~1.3/bin/x64/R CMD SHLIB file21e05c17451a.cpp 2> file21e05c17451a.cpp.err.txt' had status 1

我试过 evalCpp("2+2")来自 Rcpp包裹,它给了我 4作为答案。所以,我想编译器本身没有任何问题。这里可能是什么问题?

我运行的是 Windows 7。我的 sessionInfo如下:
R version 3.0.3 (2014-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] compiler stats graphics grDevices utils datasets methods base

other attached packages:
[1] inline_0.3.13 stringr_0.6.2 rhdf5_2.6.0
[4] RcppRoll_0.1.0 RcppArmadillo_0.4.200.0 Rcpp_0.11.1
[7] data.table_1.9.2

loaded via a namespace (and not attached):
[1] plyr_1.8.1 reshape2_1.2.2 tools_3.0.3 zlibbioc_1.8.0

* 编辑 *

在另一台装有 Windows 7 的 PC 上尝试,其中 R安装在没有任何空格的目录中,最近有 R 3.1.0安装。所以绝对不是因为 R路径有空格。

* 编辑 *

我终于得到了这份工作!需要添加 Rtools目录到 PATH .

最佳答案

正如问题中所暗示的,您需要将两个目录添加到 Windows PATH environment variable :

  • Rtools 可执行目录,可能在 C:\Rtools\bin .
  • gcc 可执行目录,可能在 C:\Rtools\gcc-4.6.3\bin .

  • 您可能需要重新启动 Windows 才能让 R 看到新的 PATH .

    您可以只为当前 R session 添加更新路径环境变量,使用以下内容:
    rtools <- "C:\\Rtools\\bin"
    gcc <- "C:\\Rtools\\gcc-4.6.3\\bin"
    path <- strsplit(Sys.getenv("PATH"), ";")[[1]]
    new_path <- c(rtools, gcc, path)
    new_path <- new_path[!duplicated(tolower(new_path))]
    Sys.setenv(PATH = paste(new_path, collapse = ";"))

    关于r - 内联函数代码无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23141982/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com