【问题标题】:How to install ROracle on Windows 7 64-bit如何在 Windows 7 64 位上安装 ROracle
【发布时间】:2013-12-06 09:01:12
【问题描述】:

这是How to install ROracle package on Windows 7?的后续内容

我在尝试构建 ROracle 时遇到以下错误

** 测试安装的包是否可以加载
inDL(x, as.logical(local), as.logical(now), ...) 中的错误: 无法加载共享对象“D:/​​Users/a101/Documents/R/win-library/3.0/ROracle/libs/x64/ROracle.dll”: LoadLibrary 失败: %1 不是有效的 Win32 应用程序。

我安装了 RTools 和 64 位 Oracle Instantclient
我从管理员权限的命令行执行以下操作:

设置 OCI_LIB64=C:/Oracle/instantclient_12_1_x64
设置 OCI_INC=C:/Oracle/instantclient_12_1_x64/sdk/include
"C:/Program Files/R/R-3.0.0/bin/x64/R" CMD INSTALL --build ROracle_1.1-10.tar.gz

我四处搜索,发现此错误是由在混合模式下构建引起的。 IE。 32 位 R 和 64 位 Oracle 客户端库,反之亦然。我已经研究了很多(很多)小时,我相信我正在使用所有 64 位(OS、R、Oracle 客户端库)。所有跟踪消息似乎到处都指示 64 位。

对我可能遗漏的内容有什么想法吗?

【问题讨论】:

  • 没关系。我相信我已经找到了错误。我对 ROracle.dll 进行了一次依赖检查,它似乎找到了 32 位版本的 OCI.dll,从而阻止了 ROracle DLL 的成功加载。
  • 如何进行依赖遍历?我遇到了完全相同的问题!

标签: r


【解决方案1】:

要运行依赖项步行,请使用 Dependecy Walker,选择在此应用程序中打开 ROracle.dll。我遇到了同样的问题,因为 ROracle.dll 正在搜索 OCI x64(Oracle 客户端),而我的 PC 上安装了它的 x86 版本。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,使用 64 位 Windows 和 R... 因为几天前我将ROracle 从 32 位转移到了 64 位。更改 OCI_LIB64、OCI_INC 并将 64 位 Instantclient 目录添加到环境变量 Path 后,它在 R 和 RStudio 中工作正常。

    但我之前设置了一个任务调度器,每天使用Rscript.exe运行一个RCode。该任务自换班以来失败并出现相同的错误:“inDL(x,as.logical(local),as.logical(now),...)中的错误:无法加载共享对象'E:/app/R_lib/ 3.4/ROracle/libs/x64/ROracle.dll':LoadLibrary 失败:%1 不是有效的 Win32 应用程序。”

    我的最终解决方案是重新启动计算机......任务计划程序再次工作......猜测应该有一些 32 位文件临时存储,需要在使用 64 位 ROracle 之前删除......

    【讨论】:

      【解决方案3】:

      您需要将 Oracle Client 32 位和 64 位 witk SDK 文件夹目录添加到 Windows 系统环境变量路径。还需要安装 rjava 包(安装 java 64 位)并在 R sys.setenv() 中设置 JAVA_HOME。

      install.packages("rJava")       #Install Java 64 bits
      library(rJava)                  #Not Errors
      
      Sys.setenv("OCI_LIB64"="C:/instantclient_12_2_64bits")
      Sys.setenv("OCI_LIB32" = "C:/instantclient_12_2_64bits")
      Sys.setenv("ORACLE_HOME" = "C:/instantclient_12_2_64bits")
      
      Sys.setenv(JAVA_HOME='C:/Program Files/Java/jre1.8.0_241')
      
      install.packages(paste0(path,"/ROracle_1.3-1.tar.gz"), repos = NULL, type = "source")
      library(ROracle)
      

      安装过程中的最后一条消息应该是 DONE!

      在Windows系统环境路径中:

      C:\instantclient_12_2_64bits;
      C:\instantclient_12_2_64bits\sdk;
      C:\instantclient_12_2_32bits;
      C:\instantclient_12_2_32bits\sdk;
      

      希望这行得通!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-28
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        相关资源
        最近更新 更多