导入mgcv失败,因为无法找到Rlapack.dll

时间:2011-10-31 22:52:41

标签: r ironpython

我想使用R.NET库链接到IronPython中的R统计包。它工作正常,但现在我需要使用R的mgcv库。

导入mgcv失败(导入是使用命令rdn.r.EagerEvaluate("library(mgcv)")完成的,其中rdn是包装R.NET库的IronPython对象)。导入失败时,Windows会打开一个对话框,提示:“程序无法启动,因为您的计算机缺少Rlapack.dll。请尝试重新安装程序以解决此问题。”

当然,如果Rlapack.dll丢失,R就不会在第一时间工作,所以发生了什么?

2 个答案:

答案 0 :(得分:3)

我检查了mgcv包的依赖关系;它们包括基础包Matrix。事实证明,R {开发团队已将Matrix编译为dll(在$ {R_HOME} /library/Matrix/libs/i386/Matrix.dll中找到)。该DLL需要链接到Rlapack.dll,由于某种原因,当在IronPython中从R.NET调用R时,它无法找到。

解决方案是将Rlapack.dll(可以在$ {R_HOME} / bin / i386 /中找到)的副本放到与Matrix.dll相同的目录中。现在每天都是星期天。

答案 1 :(得分:2)

compositions.dll我遇到了同样的问题。

因此,我没有将Rlapack.dll复制到compositions.dll所在的目录,而是将bin目录添加到PATH

string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
    rhome = @"C:\Program Files\R\R-2.14.0";

System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"\bin\i386");