我正在尝试使用R.NET v1.5.12进行设置,并且在进入我的项目之前,我运行此代码作为仅创建和初始化对象的测试。
string rHome = @"C:\Program Files\R\R-3.0.2";
string rPath = Path.Combine(rHome, @"bin\i386");
REngine.SetEnvironmentVariables(rPath, rHome);
REngine engine = REngine.GetInstance();
engine.Initialize();
Console.WriteLine("So far, so good.");
engine.Dispose();
Console.ReadKey();
代码不会产生异常,但在尝试使用REngine.GetInstance()
获取R实例时会无声地失败。没有任何内容写入控制台,控制台也不会等待按键。 Visual Studio告诉我XX.vshost.exe退出代码2,但没有说任何其他内容。
有没有人在这里有任何见解?我想这不是路径的问题,因为我明确地设置了R路径。
答案 0 :(得分:2)
我遇到了同样的问题。调用REngine.GetInstance()
使整个过程以代码2静默退出。
我研究了R.NET和R3.2.2的源代码,然后发现:
REngine.GetInstance()
调用R.dll中的本机函数setup_Rmainloop()
setup_Rmainloop()
在无法打开“基本”库文件时调用exit()
“%R_HOME%/ library / base / R / base”,退出代码为2。我建议您检查fopen("%R_HOME%/library/base/R/base", "r")
(或任何等效代码)是否失败。