加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在R包命名空间文件中正确使用useDynLib()

发布时间:2020-12-16 05:35:59 所属栏目:百科 来源:网络整理
导读:虽然互联网上存在一些解决方案,但我发现没有一个适合我面临困难的问题(虽然也许我太笨了) 我正在尝试构建一个大量使用由Makefile编译的共享对象的R包(是的,糟糕的做法,我知道,但是一个Makevars文件不能被告知将C和Fortran代码编译成一个共享对象)从包的src目
虽然互联网上存在一些解决方案,但我发现没有一个适合我面临困难的问题(虽然也许我太笨了)

我正在尝试构建一个大量使用由Makefile编译的共享对象的R包(是的,糟糕的做法,我知道,但是一个Makevars文件不能被告知将C和Fortran代码编译成一个共享对象)从包的src目录中的代码.无论我在哪里编译.so到(我尝试过src,libs和包的基本文件夹)或者我如何命名(作为上面提到的解决方案之一,它必须被命名为它包含的包),R CMD检查退出与

** testing if installed package can be loaded
Error in library.dynam(lib,package,package.lib) : 
shared object ‘SoMNibEN.R.so’ not found

由于在我的NAMESPACE文件(其中SoMNibEN.R是我的包的名称,但它不能与原始名称一起使用)的useDynLib(SoMNiben.R)指令,或者)

我的假设是,我正在使用useDynLib()命令错误,或者我做错了我的Makefile(虽然编译工作相当不错,共享对象在我的项目文件夹中创建 – 我只是不知道是否它成功复制到包安装目录).

所以,如果有人知道我在这里做错什么,请让我知道!

解决方法

您希望包的名称作为参数,因为它是由R构建的共享对象的名称,例如useDynLib(“chron”).引号是可选的(因为它们是library()等).

我还建议不要使用Makefile,而只是将C和Fortran文件放在src /目录中. R通常足够聪明才能知道什么.如果您需要-I etc开关,您可以将它们设置在那里.

最后,使用CRAN.有数百个包的编译源,有些在结构上与你的问题是一样的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读