Я думаю, что вы не можете сделать намного лучше, чем пакет inline (который поддерживает C, C ++ и Fortran):
library(inline)
fun <- cfunction(signature(x="ANY"),
body='printf("Hello, world\\n"); return R_NilValue;')
res <- fun(NULL)
, которая напечатает «Hello, World» для вас. И вы даже не знаете, где / как / когда вызывается компилятор и компоновщик. [R_NilValue - это NULL-версия R SEXP, а используемая здесь подпись .Call()
требует, чтобы вы вернули SEXP - см. Руководство «Writing R Extensions», которого вы не можете избежать здесь. ]
Затем вы возьмете такой код и свернете его в пакет. У нас был большой успех с использованием
встроенный для
Rcpp модульные тесты (более 200 и счет сейчас) и некоторые примеры.
О, и этот встроенный пример будет работать на любой ОС. Даже Windoze при условии, что у вас установлена цепочка инструментов для сборки пакетов R, в PATH и т. П.
Редактировать: Я неправильно понял вопрос. По сути, вам нужно то, что делает интерфейс littler (с использованием чистого C) и что классы RInside разрабатываются для C ++.
Джефф и я никогда не беспокоились о переносе littler на Windoze, но RInside действительно работали там в последнем выпуске. Таким образом, вы сможете поэкспериментировать с рецептами сборки и создать вариант C-only RInside , чтобы можно было передавать выражения во встроенный процесс R. Я подозреваю, что вы все еще хотите что-то вроде Rcpp для подсказки, поскольку в противном случае это становится утомительным.
Редактировать 2: И, как упоминает Шейн, действительно есть несколько примеров в источниках R в тестах / Embedding / вместе с Makefile.win. Может быть, это самое простое начало, если вы хотите узнать о внутренностях R.