带有 Rcpp 代码的包不会在 windows 上构建

Package with Rcpp code won't build on windows

我不确定我做了什么,但我似乎无法构建包含 Rcpp 代码的这个包。我已经适当地安装了 MinGW(我认为)并将其添加到我的路径中(我认为)。

坦白说,我几乎没在 windows 上工作过。

当我尝试构建和重新加载时,这是我得到的错误:

Warning: running command 'make -f "C:/PROGRA~1/R/R-32~1.4RE/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-32~1.4RE/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="packagename.dll" WIN=64 TCLBIN=64 OBJECTS="RcppExports.o somefunC.o somefunC.o"' had status 127
ERROR: compilation failed for package 'packagename'

要检查的一些基本事项:

library(devtools)
find_rtools() # TRUE
has_devel()

"C:/PROGRA~1/R/R-32~1.4RE/bin/x64/R" --no-site-file --no-environ  \
  --no-save --no-restore --quiet CMD SHLIB foo.c 

gcc -m64 -I"C:/PROGRA~1/R/R-32~1.4RE/include" -DNDEBUG     -I"d:/RCompile/r-compiling/local/local323/include"     -O2 -Wall  -std=gnu99 -mtune=core2 -c foo.c -o foo.o
gcc -m64 -shared -s -static-libgcc -o foo.dll tmp.def foo.o -Ld:/RCompile/r-compiling/local/local323/lib/x64 -Ld:/RCompile/r-compiling/local/local323/lib -LC:/PROGRA~1/R/R-32~1.4RE/bin/x64 -lR
[1] TRUE

电脑上的系统路径变量:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Brackets\command; C:\Program Files\nodejs\;C:\Program Files (x86)\Skype\Phone\;C:\MinGW\bin;C:\MinGW\msys.0\bin

几个注意事项:

更新:

虽然我不知道是什么具体步骤导致了我的解决方案(或者可能是组合),但此系统上安装的 RTools 肯定有问题。

  • 更新到较新的 R 版本
  • 再次安装包
  • 已安装 MingW
  • 已将 MingW 添加到路径
  • 在 C:/Rtools 重新安装了 Rtools(它在这台机器上的 RBuildTools)
  • 删除了路径中对 RBuildTools/ 的引用,将它们更改为 Rtools/

我怀疑是 Rtools 的非标准位置导致了问题。但我对 windows 版本的了解还不够多,无法推测。