构建在Windows上使用GSL的R包

时间:2017-10-03 01:39:32

标签: r windows gsl

我对Windows开发知之甚少。我写了一个在Linux上运行良好的R包。我试图让它在Windows上工作。不幸的是,我觉得我只是碰壁了。该软件包使用GSL库。我做的第一件事是使用mingw-w64编译它,它按预期工作。然后我继续构建包。一切都很顺利,直到R测试是否可以加载包。我收到此错误消息:

Error in inDL(x, as.logical(local), as.logical(now), ...) :
  impossible de charger l'objet partagé 'C:/Users/Patrick/Desktop/r_packages/Bayes.mix.biv.reg/libs/x64/Bayes.mix.biv.reg.dll':
  LoadLibrary failure:  %1 is not a valid Win32 application.

法语部分可能被翻译成“无法加载共享对象”。

我不明白为什么会失败。这是生成dll的行:

x86_64-w64-mingw32-gcc -shared -s -static-libgcc -o Bayes.mix.biv.reg.dll tmp.def DICWAIC.o Utils.o wrapperV11.o wrapperV11woallocations.o -LC:/PROGRA~1/R/R-3.3.3/bin/x64 -LC:/MinGW/msys/1.0/gsl/lib -lgsl -lgslcblas -Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-33~1.3/bin/x64 -lR

其中x86_64-w64-mingw32-gcc来自Rtools。 Bayes.mix.biv.reg.dll如何不是有效的Win32应用程序?

1 个答案:

答案 0 :(得分:0)

您可以按照RcppGSL附带的示例包进行操作,即使不打算使用Rcpp或RcppGSL。

its src/Makevars.win

中有这个
## This assumes that the LIB_GSL variable points to working GSL libraries
PKG_CPPFLAGS=-I$(LIB_GSL)/include
PKG_LIBS=-L$(LIB_GSL)/lib -lgsl -lgslcblas 

这里的关键,与其他一些软件包一样,你真的,真的想要依赖于预构建的库。