## ----eval = FALSE------------------------------------------------------------- # build_shared_lib = function (object_names) { # # Change working directory so R finds the Makevars. # old_dir = setwd(box::file()) # on.exit(setwd(old_dir)) # exitcode = system2('R', c('CMD', 'SHLIB', paste0(object_names, '.c'))) # stopifnot(exitcode == 0L) # } # # build_shared_lib('hello') ## ----eval = FALSE------------------------------------------------------------- # box::use(./c/`__setup__`) ## ----eval = FALSE------------------------------------------------------------- # libname = function (name) { # box::file(paste0(name, .Platform$dynlib.ext)) # } ## ----eval = FALSE------------------------------------------------------------- # .on_load = function (ns) { # ns$dll = dyn.load(libname('hello')) # } ## ----eval = FALSE------------------------------------------------------------- # .on_unload = function (ns) { # dyn.unload(libname('hello')) # } ## ----eval = FALSE------------------------------------------------------------- # #' @export # hello_world = function (name) { # .Call(dll$hello_world, name) # } ## ----eval = FALSE------------------------------------------------------------- # box::use(./c) # c$hello_world('Rthur')