尽管互联网上有一些解决方案,但我发现没有一个适合我当前面临的问题(尽管也许我太笨了):
我正在尝试构建一个 R 包,它广泛使用由 Makefile 编译的共享对象(是的,不好的做法,我知道,但是不能告诉 Makevars 文件将 C 和 Fortran 代码编译成一个共享对象) 来自包src
目录中的代码。无论我将 .so 编译到哪里(我尝试了src
,libs
和 package 基本文件夹)或者我如何命名它(正如上面提到的解决方案之一,它必须像它所包含的包一样命名),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)
我的 NAMESPACE 文件中的说明(SoMNibEN.R
我的包的名称在哪里,但它也不适用于原始名称)
我的假设是我要么使用错误的useDynLib()
命令,要么我的 Makefile 做错了什么(尽管编译工作得很好,并且共享对象是在我的项目文件夹中创建的 - 我只是不知道它是否被复制成功到包安装目录)。
所以,如果有人知道我在这里可能做错了什么,请告诉我!