我是https://github.com/shians/scpipe的开发人员,目前该程序包无法在Windows上构建。
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。
答案 0 :(得分:0)
你在上面评论说“我只是按照指示......”。很抱歉告诉你,但这些说明看起来很垃圾。我在Windows上找不到任何其他使用这种方法的软件包,它似乎极脆弱;我可以使用cmd.exe安装您的软件包,但它使用Windows bash提示失败。
无论如何,你所拥有的是Windows上的链接器错误。 R报告这些很糟糕。您需要做的是使用--no-test-load安装软件包,然后使用“Dependency Walker”检查已安装的.dll。在这种情况下,生成的二进制文件对zlib1bioc.dll,有直接的二进制依赖,我认为根本不支持。您需要重新构建代码以避免这种情况。 ,其中包含5.8.2,编写R扩展。