Как мне скомпилировать dll с R и RCPP?

Я написал файл.cpp, и я хочу скомпилировать его в.dll для использования с R и RCPP. (без использования встроенного пакета). Я использую WinXP и R 2.13.2 и RCPP 0.9.7. Я использую Rtools 2.14.

  1. Как включить Rcpp.h в путь поиска minGW? Я недооцениваю, что файлы, которые мне нужно включить, находятся в C:\Program Files\R\R-2.13.2\library\Rcpp\include. Однако я не смог добавить "добавить" их в "путь поиска".

  2. Я устал от временного "взлома". Я скопировал содержимое C: \ Program Files \ R \ R-2.13.2 \ library \ Rcpp \ include в каталог включения minGW. Процесс компиляции / компоновки получает из myfile.cpp в myfile.o, но выдает кучу ошибок, прежде чем он сможет скомпилировать myfile.dll.

Я добавил C:\Program Files\R\R-2.13.2\bin\i386 в мою PATH, и я вызываю R CMB SHLIB myfile.cpp из командной строки WinXP.

Что мне делать?

1 ответ

Решение

Пара быстрых моментов:

  1. gcc а также g++ компиляторы из MinGW ведут себя так же, как и другие компиляторы из gcc семьи. Это означает, что "добавить к поисковому пути" нет: вы используете -I/some/dir переключиться, чтобы добавить этот путь и каталог. Так же, -L/some/lib добавляет этот каталог к ​​пути компоновщика.

  2. Вы действительно хотите использовать Makefile, Наши пакеты Rcpp содержат много примеров; Вы могли бы посмотреть на Makefile в ConvolveBenchmarks каталог.

  3. Но то, что вы действительно хотите, это использовать так называемый "пакет". У нас есть целая виньетка Rcpp-пакета, посвященная этому. Это может быть так же просто, как вызов rcpp.package.skeleton() функция, которая создает пакет для вас --- и динамическая библиотека создается как побочный эффект.

  4. Если все это слишком запутанно, попробуйте сначала ознакомиться с inline. Использовать verbose=TRUE аргумент, чтобы увидеть, как inline создает динамическую библиотеку!

  5. Наконец, мы пишем это Rcpp, а не RCPP.

rcpp-devel список рассылки также является хорошим источником помощи.

Другие вопросы по тегам