Как мне скомпилировать dll с R и RCPP?
Я написал файл.cpp, и я хочу скомпилировать его в.dll для использования с R и RCPP. (без использования встроенного пакета). Я использую WinXP и R 2.13.2 и RCPP 0.9.7. Я использую Rtools 2.14.
Как включить Rcpp.h в путь поиска minGW? Я недооцениваю, что файлы, которые мне нужно включить, находятся в C:\Program Files\R\R-2.13.2\library\Rcpp\include. Однако я не смог добавить "добавить" их в "путь поиска".
Я устал от временного "взлома". Я скопировал содержимое 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 ответ
Пара быстрых моментов:
gcc
а такжеg++
компиляторы из MinGW ведут себя так же, как и другие компиляторы изgcc
семьи. Это означает, что "добавить к поисковому пути" нет: вы используете-I/some/dir
переключиться, чтобы добавить этот путь и каталог. Так же,-L/some/lib
добавляет этот каталог к пути компоновщика.Вы действительно хотите использовать
Makefile
, Наши пакеты Rcpp содержат много примеров; Вы могли бы посмотреть наMakefile
вConvolveBenchmarks
каталог.Но то, что вы действительно хотите, это использовать так называемый "пакет". У нас есть целая виньетка Rcpp-пакета, посвященная этому. Это может быть так же просто, как вызов
rcpp.package.skeleton()
функция, которая создает пакет для вас --- и динамическая библиотека создается как побочный эффект.Если все это слишком запутанно, попробуйте сначала ознакомиться с inline. Использовать
verbose=TRUE
аргумент, чтобы увидеть, как inline создает динамическую библиотеку!
rcpp-devel
список рассылки также является хорошим источником помощи.