繁体   English   中英

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

[英]Building R package with C code, dll missing

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

如果我手动执行R CMD SHLIB然后dyn.load .dll文件,所有函数都正常工作。

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

我把所有的C代码放在src文件夹中,连同我正在添加的库的.h文件。 当我运行R CMD构建NAMEPACKAGE时,一切似乎都很好,但是当我运行R CMD检查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文件,但说实话,我花了很多时间在Writing R扩展教程(1.2.1)上,我真的很难理解我到底需要做什么。 有人可以向我解释如何解决问题吗? 考虑我想将我的包提交给CRAN。 谢谢。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM