我是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個工作包開始。 –