给Julia打电话从R问题
我正在使用Julia 1.0.0和R 3.5.1,我在使用给Julia打电话从R问题,r,julia,R,Julia,我正在使用Julia 1.0.0和R 3.5.1,我在使用JuliaCall和XRJulia从R/RStudio调用Julia时遇到问题 当我尝试时: library(JuliaCall) julia <- julia_setup(JULIA_HOME = "C:\\Program Files\\Julia-1.0.0\\bin") (这是关于Julia的dll问题的更一般的建议。如果我安装了R,我将尝试确切的情况。) WindowsSetDllDirectory问题 我在PyInsta
JuliaCall
和XRJulia
从R/RStudio调用Julia时遇到问题
当我尝试时:
library(JuliaCall)
julia <- julia_setup(JULIA_HOME = "C:\\Program Files\\Julia-1.0.0\\bin")
(这是关于Julia的dll问题的更一般的建议。如果我安装了R,我将尝试确切的情况。)
WindowsSetDllDirectory
问题
我在PyInstaller调用另一种语言时遇到了类似的问题。它最终与PyInstaller中对setdldirectory
的调用有关,该调用以一种奇怪的方式修改了搜索路径
为了修复它,我只需要告诉python将setdldirectory
重置回NULL
。我不能完全确定R中的等价物
系统内部列表DLL
在调试加载的DLL时,我非常喜欢SysInternals提供的这个工具。下载它,并在julia
或R
运行时,使用ListDlls.exe julia
或R
运行它
Rdyn.load
文档
如果您在第三方dll中加载dll,R也会尝试做很多事情来查找dll,尤其是在Windows上
“加载DLL的标准机制”包括
找到DLL的位置(如果不是作为绝对路径给出,则为
首选),以及找到其依赖DLL的位置。这次搜索
路径取决于Windows版本及其安全设置,但
对于Windows XP SP1之后的版本,它是
- 从中启动应用程序的目录
- 各种系统目录,例如
,c:/Windows/system32
和c:/Windows/system
c:/Windows
- 当前目录
- 沿着环境给定的可执行文件的搜索路径
变量
路径
libs
目录中提供依赖的DLL,
并通过设置PATH
变量(library.dynam
执行此操作
在R的最新版本中自动执行),但DLL搜索顺序意味着
启动目录和系统目录中的DLL将
首选。在WindowsXPSP1和更高版本上,有一种方法可以修改
搜索顺序。如果参数DLLpath
提供给dyn.load
,则后者
使用Windows系统调用SetDllDirectory
插入
第二位的DLLpath
值,并删除当前目录,
在dyn.load
调用期间。(请注意,只有一个目录
可以通过这种方式插入。)
用户被这样的消息弄糊涂了
error: unable to load shared object
'.../library/rJava/libs/x64/rJava.dll':
LoadLibrary failure: The specified module could not be found.
最后一行是一个窗口(不是
R) 诊断:找不到的“模块”不是rJava.dll
但Windows正在寻找其他东西(这里最有可能是Java)
DLL):如果幸运的话,将出现一个包含更多详细信息的对话框
Julia如何加载Sys.dll
Julia 1.x current从exe所在的文件夹bin/
中加载一些dll,它还从附近的文件夹。/lib/Julia/sys.dll
中加载sys.dll
。调用julia时,您可以通过使用-J
参数指定sys.dll
的位置来覆盖此选项
希望有帮助。JuliaCall发出的错误消息表明R无法找到julia所需的DLL,该DLL应位于“C:\\Program Files\\julia-1.0.0\\bin”文件夹中。将该路径添加到系统路径可能会有所帮助。@我更新了我的帖子以包含您的建议。当我尝试使用Julia路径设置系统环境,然后运行
Julia\u setup
时,我的R会话立即中止。您是在RStudio中还是在命令行R中尝试过?Julia v1.0目前似乎在嵌入Windows上的GUI应用程序方面存在一些问题。但它应该在命令行R中工作。最初我使用R Studio,但我只是尝试了R控制台,当我尝试使用JuliaCall时,它只是关闭了我的R会话,XRJulia抛出了一个警告。我使用的是windows电脑(windows 7)。谢谢您的详细回答!我尝试集成R和Julia已经有一段时间了,但是使用JuliaCall
0.17.1,通过R 3.6.2和Julia 1.3.1,我能够集成它们。下面是我使用的代码行library(JuliaCall);朱莉娅
Sys.setenv(PATH = paste(Sys.getenv("PATH"),"C:\\Program Files\\Julia-1.0.0\\bin",sep=";"))
library(JuliaCall)
julia <- julia_setup(JULIA_HOME = "C:\\Program Files\\Julia-1.0.0\\bin")
error: unable to load shared object
'.../library/rJava/libs/x64/rJava.dll':
LoadLibrary failure: The specified module could not be found.