Хотя в Интернете существует несколько решений, я не нашел ни одного из тех, которые подходят для проблемы, с которой я сверкаю (хотя, может быть, я просто слишком тупой):
Я пытаюсь создать R-пакет, который широко использует общий объект, скомпилированный с помощью Makefile (да, плохая практика, я знаю, но файл Makevars просто не может быть использован для компиляции кода C и Fortran в один общий объект) из кода в каталоге src
. Независимо от того, где я компилирую это .so(я попробовал src
, libs
и базовые папки пакета) или как я его назвал (поскольку одно из упомянутых выше решений указывает, что оно должно быть названо как пакет, в котором он содержится), 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 (хотя компиляция работает очень хорошо, а общий объект создается в моей папке проекта - я просто не знаю, t знает, успешно ли он скопирован в каталог установки пакета.)
Итак, если кто-то знает, что я могу делать неправильно здесь, пожалуйста, дайте мне знать!