[Rcpp-devel] Fwd: Request for help with compiling Rcpp example
Jian Kang
allenhahaha at gmail.com
Fri Oct 14 20:52:38 CEST 2011
| Hi, Dirk,
|
| Sorry to disturb you again.
|
| Actually, I am also very interested in how to call back the R commands in
| 'cxxfunction'. Do you have some examples or tutorial about this?
Please keep questions on the mailing list.
Dirk
|
| Thank you very much.
|
| Best regards,
|
| Kent
|
|
| On Fri, Oct 14, 2011 at 4:39 PM, Dirk Eddelbuettel <edd at debian.org> wrote:
|
|
| Hi Kent,
|
| On 14 October 2011 at 16:00, Jian Kang wrote:
| | Hi, Dirk,
| |
| | Sorry for delay.
| |
| | I tried to install the R and Rtools again, and run the program
again,
| then it
| | works.
|
| Excellent!
|
| | But here is some warnings, I am not sure whether this is OK in the
| future.
| |
| | Compilation argument:
| | C:/R/Rsoft/bin/i386/R CMD SHLIB file7e446574.cpp 2>
| | file7e446574.cpp.err.txt
| | g++ -I"C:/R/Rsoft/include" -I"C:/R/Rsoft/library/Rcpp/include"
| -O2
| | -Wall -c file7e446574.cpp -o file7e446574.o
| | g++ -shared -s -static-libgcc -o file7e446574.dll tmp.def
file7e446574.o
| C:/R/
| | Rsoft/library/Rcpp/lib/i386/libRcpp.a -LC:/R/Rsoft/bin/i386 -lR
| | cygwin warning:
| | MS-DOS style path detected: C:/R/Rsoft/etc/i386/Makeconf
| | Preferred POSIX equivalent is:
/cygdrive/c/R/Rsoft/etc/i386/Makeconf
| | CYGWIN environment variable option "nodosfilewarning" turns off
this
| | warning.
| | Consult the user's guide for more details about POSIX paths:
| | http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
|
| That started with more recent Cygwin / MinGW versions. Google for
this, I
| think there were tricks to turn it off. This came up on r-help once or
| twice
| too.
|
| But to reiterate: it is just a warning, and it has nothing to do with
Rcpp.
|
| Dirk
|
|
| | Thank you very much.
| |
| | Best,
| |
| | Kent
| |
| |
| | On Thu, Oct 13, 2011 at 6:46 PM, Dirk Eddelbuettel <edd at debian.org>
| wrote:
| |
| |
| | On 13 October 2011 at 18:15, Jian Kang wrote:
| | | Thanks for your reply.
| | |
| | | Here is the response of 'Hello World' program:
| | |
| | | > src='#include <iostream>
| | | + using namespace std;
| | | + void main()
| | | + {
| | | + cout << "Hello World!" << endl;
| | | + cout << "Welcome to C++ Programming" << endl;
| | | + }'
| | | >
| | | > fx <- cxxfunction(src,plugin = "Rcpp",verbose=T)
| |
| | PBKAC -- wrong call of cxxfunction(). You can see below how the
| generated
| | code does *not* include your actual function.
| |
| | The correct idiom is
| |
| | fx <- cxxfunction(signature(), body=src,plugin =
| "Rcpp",verbose=TRUE)
| |
| | Dirk
| |
| |
| | | >> setting environment variables:
| | | PKG_LIBS = C:/R/Rsoft/library/Rcpp/lib/i386/libRcpp.a
| | |
| | | >> LinkingTo : Rcpp
| | | CLINK_CPPFLAGS = -I"C:/R/Rsoft/library/Rcpp/include"
| | |
| | | >> Program source :
| | |
| | | 1 :
| | | 2 : // includes from the plugin
| | | 3 :
| | | 4 : #include <Rcpp.h>
| | | 5 :
| | | 6 :
| | | 7 : #ifndef BEGIN_RCPP
| | | 8 : #define BEGIN_RCPP
| | | 9 : #endif
| | | 10 :
| | | 11 : #ifndef END_RCPP
| | | 12 : #define END_RCPP
| | | 13 : #endif
| | | 14 :
| | | 15 : using namespace Rcpp;
| | | 16 :
| | | 17 :
| | | 18 : // user includes
| | | 19 :
| | | 20 :
| | | 21 : // declarations
| | | 22 : extern "C" {
| | | 23 : SEXP file3a1c304e( ) ;
| | | 24 : }
| | | 25 :
| | | 26 : // definition
| | | 27 :
| | | 28 : SEXP file3a1c304e( ){
| | | 29 : BEGIN_RCPP
| | | 30 :
| | | 31 : END_RCPP
| | | 32 : }
| | | 33 :
| | | 34 :
| | | Compilation argument:
| | | C:/R/Rsoft/bin/i386/R CMD SHLIB file3a1c304e.cpp 2>
| | | file3a1c304e.cpp.err.txt
| | | g++ -I"C:/R/Rsoft/include" -I"C:/R/Rsoft/library/Rcpp/
| include"
| | -O2
| | | -Wall -c file3a1c304e.cpp -o file3a1c304e.o
| | | g++ -shared -s -static-libgcc -o file3a1c304e.dll tmp.def
| file3a1c304e.o
| | C:/R/
| | | Rsoft/library/Rcpp/lib/i386/libRcpp.a -LC:/R/Rsoft/bin/i386
-lR
| | | cygwin warning:
| | | MS-DOS style path detected: C:/R/Rsoft/etc/i386/Makeconf
| | | Preferred POSIX equivalent is: /cygdrive/c/R/Rsoft/etc/i386/
| Makeconf
| | | CYGWIN environment variable option "nodosfilewarning" turns
| off this
| | | warning.
| | | Consult the user's guide for more details about POSIX paths:
| | | http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
| | | Error in as.function.default(c(value, if (is.null(bd) ||
is.list
| (bd))
| | list(bd)
| | | else bd), :
| | | invalid formal argument list for "function"
| | |
| | | Here, I also tried the test by Hadley,
| | |
| | | _devel()
| | | cygwin warning:
| | | MS-DOS style path detected: C:/R/Rsoft/etc/i386/Makeconf
| | | Preferred POSIX equivalent is: /cygdrive/c/R/Rsoft/etc/i386/
| Makeconf
| | | CYGWIN environment variable option "nodosfilewarning" turns
| off this
| | | warning.
| | | Consult the user's guide for more details about POSIX paths:
| | | http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
| | | gcc -I"C:/R/Rsoft/include" -I"C:/R/Rsoft/library/Rcpp/
| include"
| | -O3
| | | -Wall -std=gnu99 -c foo.c -o foo.o
| | | gcc -shared -s -static-libgcc -o foo.dll tmp.def foo.o
C:/R/Rsoft
| /library
| | /Rcpp/
| | | lib/i386/libRcpp.a -LC:/R/Rsoft/bin/i386 -lR
| | | [1] TRUE
| | |
| | | Sorry that I don't really get it how to rebuild R packages
from
| source.
| | |
| | | Thanks,
| | |
| | | Kent
| | |
| | | On Thu, Oct 13, 2011 at 5:11 PM, Hadley Wickham <
hadley at rice.edu>
| wrote:
| | |
| | | > My best guess is that you have not installed the Rtools
| | correctly. Can
| | | you
| | | > compile a simple 'hello, world' example in C or C++?
| Can you
| | rebuild R
| | | > packages from source?
| | |
| | | I wrote an function to check that you have a valid R
| development
| | | environment (with help from Simon Urbanek) for devtools.
| See code
| | | below - and check with has_devel()
| | |
| | | Hadley
| | |
| | |
| | | has_devel <- function() {
| | | foo_path <- file.path(tempdir(), "foo.c")
| | |
| | | cat("void foo(int *bar) { *bar=1; }\n", file = foo_path)
| | | on.exit(unlink(foo_path))
| | |
| | | R("CMD SHLIB foo.c", tempdir())
| | | dylib <- file.path(tempdir(), paste("foo",
| .Platform$dynlib.ext,
| | sep=''))
| | | on.exit(unlink(dylib), add = TRUE)
| | |
| | | dyn.load(dylib)
| | | on.exit(dyn.unload(dylib), add = TRUE)
| | |
| | | stopifnot(do.call(".C", list("foo",0L))[[1]] == 1L)
| | | TRUE
| | | }
| | |
| | | R <- function(options, path = tempdir()) {
| | | r_path <- shQuote(file.path(R.home("bin"), "R"))
| | | in_dir(path, system_check(paste(r_path, options)))
| | | }
| | |
| | | system_check <- function(cmd) {
| | | res <- system(cmd)
| | | if (res != 0) {
| | | stop("Command failed (", res, ")", call. = FALSE)
| | | }
| | | invisible(TRUE)
| | | }
| | |
| | | in_dir <- function(dir, code) {
| | | cur <- getwd()
| | | setwd(dir)
| | | on.exit(setwd(cur))
| | |
| | | force(code)
| | | }
| | |
| | | --
| | | Assistant Professor / Dobelman Family Junior Chair
| | | Department of Statistics / Rice University
| | | http://had.co.nz/
| | | _______________________________________________
| | | Rcpp-devel mailing list
| | | Rcpp-devel at lists.r-forge.r-project.org
| | | https://lists.r-forge.r-project.org/cgi-bin/mailman/
| listinfo/
| | rcpp-devel
| | |
| | |
| |
| | --
| | "Outside of a dog, a book is a man's best friend. Inside of a
dog,
| it is
| | too
| | dark to read." -- Groucho Marx
| |
| |
|
| --
| "Outside of a dog, a book is a man's best friend. Inside of a dog, it
is
| too
| dark to read." -- Groucho Marx
|
|
--
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20111014/96cfbc7b/attachment-0001.htm>
More information about the Rcpp-devel
mailing list