gpt4 book ai didi

c - 使用 C 代码构建 R 包,缺少 dll

转载 作者:行者123 更新时间:2023-12-02 03:30:17 27 4
gpt4 key购买 nike

我正在尝试构建一个 R 包,它通过 .Call 调用一些 C 子例程。

如果我手动执行 R CMD SHLIB 然后动态加载 .dll 文件,所有功能都可以正常工作。

现在,我正在使用 R CMD 构建包。

我将所有 C 代码以及我要添加的一些库的 .h 文件放在 src 文件夹中。当我运行 R CMD build NAMEPACKAGE 时,一切似乎都很好,但是当我运行 R CMD check NAMEPACKAGE 时,出现以下错误:

*** arch - i386
Error in library.dynam(lib, package, package.lib) :
DLL 'NAMEFUNC' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
*** arch - x64
Error in library.dynam(lib, package, package.lib) :
DLL 'NAMEFUNC' not found: maybe not installed for this architecture?
Error: loading failed
Execution halted
ERROR: loading failed for 'i386', 'x64'

我试图在互联网上获取一些信息,我觉得我应该写一个 Makevars 文件,但老实说我花了很多时间在编写 R 扩展教程 (1.2.1) 上,我真的努力理解我到底需要做什么。有人可以向我解释如何解决这个问题吗?假设我想将我的包裹提交给 CRAN。谢谢。

最佳答案

我刚刚发现问题出在哪里!这是(像往常一样)相当愚蠢的事情,我不知道即使你用某个名称调用某个函数,相关的 dll 也会自动使用包的名称而不是函数本身来调用,就像它一样相反,当您通过 R CMD SHLIB 创建 dll 时会发生这种情况。因此,在 NAMESPACE 中我必须添加 useDynLib(NAMEOFPACKAGE) 而不是 useDynLib(NAMEOFFUNCTION)。

关于c - 使用 C 代码构建 R 包,缺少 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27299129/

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