2014-02-11 5 views
0

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

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

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

при написании пакета. Огромное спасибо.

+0

Если вы в конце концов сделали 'qserver' в формате R-формата, не могли бы вы поделиться? Я на самом деле думал также конвертировать его в пакет –

ответ

2

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

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

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

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

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

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

+0

На самом деле источник доступен в [code.kx.com repo, например. для w64 здесь] (http://code.kx.com/wsvn/code/cookbook_code/r/w64_qserver/), а именно файлы 'base.c' и' c.o'. Инструкции по созданию 'qserver.dll' из предоставленного источника находятся в' README.txt'. Не уверен, что это будет работать так, как есть, не проверено. –

+0

Также проверит лицензирование утилиты qserver, прежде чем отправлять что-либо в CRAN, так как kdb является запатентованной базой данных. –

Смежные вопросы