Как загрузить скомпилированную библиотеку в пакет R

Я пишу пакет R, в который мне нужно включить скомпилированный файл библиотеки qserver.dll и dym.load его, когда пакет загружается в R через библиотеку (myPackage). Этот qserver.dll предоставляется сторонним поставщиком, поэтому у меня нет исходного кода.

Я провел некоторое исследование в Интернете, но информация редка. Что я нашел до сих пор, так это то, что я должен поместить этот файл в подкаталог to inst/ моей папки пакета. Однако, как я могу определить путь к этому файлу при написании пакета, чтобы я мог написать что-то вроде

dyn.load("path/to/file/qserver.dll")

при написании пакета. Спасибо большое.


person yuez    schedule 11.02.2014    source источник
comment
если вы в конечном итоге превратили qserver в формат пакета R, не могли бы вы поделиться? На самом деле я тоже думал преобразовать его в пакет   -  person Daniel Krizian    schedule 15.02.2015


Ответы (1)


Элементы в каталоге inst пакета доступны через

system.file(..., package=<mypkg>)

поэтому, если у вас есть этот .dll в пути к пакету <pkg>/inst/lib/qserver.dll, вы можете сделать

system.file("lib/qserver.dll", package=<mypkg>)

чтобы получить местоположение файла.

Теперь, конечно, это неприемлемо для CRAN, и Политика репозитория CRAN с этим все ясно. Так что, если вам действительно нужен qserver.dll, вам нужно либо найти исходный код, либо рассмотреть другой способ распространения.

person Kevin Ushey    schedule 11.02.2014
comment
На самом деле исходный код доступен в репозитории code.kx.com, например для w64 здесь, а именно файлы base.c и c.o. Инструкции по сборке qserver.dll из предоставленного исходного кода находятся в README.txt. Не уверен, что это будет работать как есть, не проверял. - person Daniel Krizian; 15.02.2015
comment
Также будет проверяться лицензирование утилиты qserver перед публикацией чего-либо в CRAN, так как kdb — это проприетарная база данных. - person Daniel Krizian; 15.02.2015