2011-10-31 99 views
4

我想通过使用R.NET库链接到IronPython中的R统计包。它工作正常,但现在我需要使用R的mgcv库。导入mgcv失败,因为无法找到Rlapack.dll

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

当然,如果Rlapack.dll丢失了,R从来不会在第一个地方工作,那么究竟发生了什么?

+2

不要担心回答这个问题;我已经解决了这个问题,并会在8个小时内发布解决方案,届时SO的锁定将到期。 – Wesley

+0

我不知道IronPython在哪里查找Rlapack.dll,但是R正在自己的主目录中查找它(.../R-2.xx/bin/i386或/R-2.xx/bin/ x64为64位版本)。这不是R可执行文件的目录,也不是库。将此添加到您的路径可能会有所帮助。 –

回答

3

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

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

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"); 
+0

这很奇怪。在Windows XP中,将R bin添加到'PATH'不适用于我。但它在Windows 7中工作! –

相关问题