2

当我通过集成了 R 的 Visual Studio 2010 运行 ac# 应用程序时,我收到错误消息:The program can't start because Rlapack.dll is missing from your computer. Try reinstalling the program to fix this problem. 我尝试重新安装程序,但它不起作用。我还尝试将其放入包含 Matrix 的文件夹中,但它不起作用。StackOverflow Q中建议了此解决方案。

我正在运行 64 位 Windows 7!该应用程序是 32 位的。有两个dll。一个在名为 i386 的文件夹中,另一个在 x64 文件夹中。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RDotNet;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {



        public Form1()
        {
            InitializeComponent();
            string dlldir = @"D:\Program Files\R-2.15.0\bin\i386";

            bool r_located = false;


            while (r_located == false)
            {
                try
                {
                    REngine.SetDllDirectory(dlldir);
                    REngine.CreateInstance("RDotNet");
                    r_located = true;
                }

                catch
                {
                    MessageBox.Show(@"Unable to find R installation's \bin\i386 folder.
                    Press OK to attempt to locate it.");


                }
            }
        }
    }
}
4

3 回答 3

9

我意识到这已经得到了回答,但那是在 2012 年。对于任何在 2018 年仍然遇到 R 版本 3.4.3 或更高版本的人,特别是在尝试遵循r.net 主页上的简单示例时,以下是我确实修复了它:

  1. 在您的代码中,在该行之前REngine engine = REngine.GetInstance();,添加该行REngine.SetEnvironmentVariables(@"C:\Program Files\R\R-3.4.3\bin\x64", @"C:\Program Files\R\R-3.4.3");

  2. 右键单击项目,转到构建并取消选中“首选 32 位”。

  3. 复制Rlapack.dllC:\Program Files\R\R-3.4.3\bin\i386

  4. 粘贴在两者C:\Program Files\R\R-3.4.3\library\stats\libs\i386C:\Program Files\R\R-3.4.3\library\Matrix\libs\i386

  5. 复制Rlapack.dllC:\Program Files\R\R-3.4.3\bin\x64

  6. 粘贴到C:\Program Files\R\R-3.4.3\library\stats\libs\x64C:\Program Files\R\R-3.4.3\library\Matrix\libs\x64中。

如此痛苦,但这就是最终让它为我工作的原因。

于 2018-01-11T16:07:29.560 回答
2

这是我刚刚做的,它起作用了:我把 dll 放在我的应用程序的 bin 文件夹中。

于 2012-06-10T10:11:38.383 回答
1

尝试设置路径变量before调用 dll:

     var envPath = Environment.GetEnvironmentVariable("PATH");
     string s = null;
     if (Environment.Is64BitProcess)
         s = @"C:\Program Files\R\R-2.15.0\bin\x64";
     else
         s = @"C:\Program Files\R\R-2.15.0\bin\i386";
     Environment.SetEnvironmentVariable("PATH", envPath + Path.PathSeparator + s);
于 2013-12-03T19:19:30.107 回答