如何在R包命名文件正确使用useDynLib()(How to use useDynLib() co

2019-08-01 16:24发布

虽然在互联网上存在的一些解决方案,我发现这些都不适合我curerntly面临的问题(虽然也许我只是太哑):

我试图建立的R包,它广泛使用的共享对象由一个Makefile(编译是的,不好的做法,我知道,但Makevars文件只是不能告诉编译C和Fortran代码转换成一个共享对象)从包装的代码src目录。 无论在哪里我编译。所以到(我试过srclibs和封装基板的文件夹),或者我如何命名(如上面提到的解决方案之一规定它必须被命名为喜欢它的包中包含的), R CMD check与出口

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

由于useDynLib(SoMNibEN.R)在我的空间文件指令(其中SoMNibEN.R是我的包的名字,但它并没有用原来的名字上班,要么)

我的假设是,我要么使用useDynLib()命令错误或我做错了我的Makefile文件(尽管汇编工作得很好,在我的项目文件夹中创建共享对象-我只是不知道是否它被复制到软件包的安装目录成功)。

所以,如果有人知道我可能是错在这里做,请让我知道!

Answer 1:

你想作为参数的名称 ,因为这是如由R创建的共享对象的名称 useDynLib("chron") 引号是可选的(因为它们是library()等)。

我也建议不要使用Makefile文件,而只是丢弃在了C和Fortran文件src/目录下。 R是一般足够聪明,知道怎么办才好。 如果您需要-I等开关可以设定他们那里。

最后,使用CRAN。 有数百个软件包编译源,有些必然是在结构上与您的问题类似。



文章来源: How to use useDynLib() correctly in an R package namespace file