gpt4 book ai didi

r - 使用预编译的共享库构建 R 包

转载 作者:行者123 更新时间:2023-12-04 01:55:35 24 4
gpt4 key购买 nike

我正在编写并尝试使用预编译共享库构建的 R 包遇到问题。让我试着简要描述一下这个问题:

  • 这个包(我们称之为 mypack)依赖于一个共享库 mylib.dll已经编译并且我无法在构建 R 包时即时编译。
  • 图书馆mylib.dll已在x64 机器上编译,可在Windows 下使用dyn.load 加载到R 中。 .
  • 该包包含所需的文件 NAMESPACE ,其中 useDynLib(mylib.dll)被指定。函数.onLoad包含指令 library.dynam('mylib.dll', pkg, lib)也在文件 zzz.R 中指定.
  • R包mypack建于 Rtools使用通常的命令 Rcmd INSTALL ,然后我添加一个目录 libs我在哪里保存 mylib.dll .
  • 当我尝试使用 library(mypack) 在 R 中加载包时,我收到以下错误消息:Error: package 'mypack' is not installed for 'arch=x64'

  • 这让我很困惑。为什么在 R 中可以顺利加载共享库,但是当我使用它构建包时,我收到了这个奇怪的错误消息?

    非常感谢您的帮助!

    最佳答案

    该错误消息来自 library 中的此代码:

     if (nzchar(r_arch) && file.exists(file.path(pkgpath, 
    "libs")) && !file.exists(file.path(pkgpath, "libs",
    r_arch)))
    stop(gettextf("package %s is not installed for 'arch=%s'",
    sQuote(pkgname), r_arch), call. = FALSE, domain = NA)

    这告诉我你的构建包(即安装目录)中需要一个 {package}/libs/{arch} 文件夹,其中 {arch} 与你的系统架构相匹配,如 r_arch <- .Platform$r_arch 给出的

    我猜你的构建没有正确地做到这一点。你的源代码中有 C 代码吗?

    关于r - 使用预编译的共享库构建 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14024045/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com