我是https://github.com/shians/scpipe的开发者,目前该包无法在Windows上构建。R包无法在Windows上加载DLL
Error: package or namespace load failed for 'scPipe' in inDL(x, as.logical(local), as.logical(now), ...):
unable to load shared object 'C:/Users/pkgbuild/AppData/Local/Temp/RtmpAlOaQo/Rinst35046f5f2410/scPipe/libs/x64/scPipe.dll':
LoadLibrary failure: The specified module could not be found.
满满的日志here。
这个包应该是安装有
devtools::install_github("shians/scpipe")
但显然这会失败。但它至少会安装所有相关的依赖关系,然后您可以下载源以进一步检查。
我已经监视了安装目标,以确定scPipe.dll
确实存在于加载尝试时。除此之外,我不知道我还能做些什么诊断。
与Linux,macOS和Windows的唯一明显区别是Makevars文件,我根据zlibbioc和Rhtslib的说明设置了该文件。
我找不到任何可能导致此错误的资源。如果有人能够阐明这一点,将不胜感激。 This SO thread是最接近的,但我没有看到任何适用的解决方案,对我来说,用我的包改变用户的PATH设置显然是不可行的。
编辑:
在Makevars.win
的命令分别扩展到
Rhtslib::pkgconfig("PKG_LIBS")
-L"C:/Users/su.s/Documents/R/win-library/3.4/Rhtslib/lib/x64" -lhts -lz -pthread -lws2_32
zlibbioc::pkgconfig("PKG_CFLAGS")
-I"C:/Users/su.s/Documents/R/win-library/3.4/zlibbioc/include"
zlibbioc::pkgconfig("PKG_LIBS_shared")
-L"C:/Users/su.s/Documents/R/win-library/3.4/zlibbioc/libs/x64" -lzlib1bioc
,导致完全编译消息为DLL
c:/Rtools/mingw_64/bin/g++ -shared -s -static-libgcc -o scPipe.dll tmp.def RcppExports.o cellbarcode.o detect_barcode.o parsebam.o parsecount.o rcpp_scPipe_func.o transcriptmapping.o trimbarcode.o utils.o -LC:/Users/su.s/Documents/R/win-library/3.4/Rhtslib/lib/x64 -lhts -lz -pthread -lws2_32 -LC:/Users/su.s/Documents/R/win-library/3.4/zlibbioc/libs/x64 -lzlib1bioc -Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-34~1.1/bin/x64 -lR
其中据我可以告诉与符合规定5.8.2 of Writing R Extensions。
从查看源代码看来,您使用的是非标准且更复杂的文件'src/Makevars.win'。所以有些东西会破裂 - 现在你可以保留这些碎片。 –
那么我只需遵循[zlibbioc](https://bioconductor.org/packages/devel/bioc/vignettes/zlibbioc/inst/doc/UsingZlibbioc.pdf)和[Rhtlsib](https://bioconductor.org)的说明/packages/release/bioc/vignettes/Rhtslib/inst/doc/Rhtslib.html)为我的Makefile.win。我想象如果包括的线是问题,那么显着更多的人会有相同的问题。 – shians
我不知道这两个软件包是什么,但我高兴地将你的观点转向你,因为在CRAN **上有** 1113个工作包,在BioC上有另外90个工作包。所有这些都建立在Windows上(可能有少数依赖于Unix的库,但这些都是特例)。所以我会从这1200个工作包开始。 –