给Julia打电话从R问题

给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

我正在使用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,我将尝试确切的情况。)

Windows
SetDllDirectory
问题 我在PyInstaller调用另一种语言时遇到了类似的问题。它最终与PyInstaller中对
setdldirectory
的调用有关,该调用以一种奇怪的方式修改了搜索路径

为了修复它,我只需要告诉python将
setdldirectory
重置回
NULL
。我不能完全确定R中的等价物

系统内部列表DLL 在调试加载的DLL时,我非常喜欢SysInternals提供的这个工具。下载它,并在
julia
R
运行时,使用
ListDlls.exe julia
R
运行它

R
dyn.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.