Paul Viefers
2011-Dec-05 18:22 UTC
[Rd] RcppArmadillo compilation error: R CMD SHLIB returns status 1
Dear all,
running the example by D. Eddebuettel
(http://dirk.eddelbuettel.com/blog/2011/04/23/) I get an error message.
Specifically, the R code I was taking from the above example is
### BEGIN EXAMPLE ###
suppressMessages(require(RcppArmadillo))
suppressMessages(require(Rcpp))
suppressMessages(require(inline))
code <- '
arma::mat coeff = Rcpp::as<arma::mat>(a);
arma::mat errors = Rcpp::as<arma::mat>(e);
int m = errors.n_rows; int n = errors.n_cols;
arma::mat simdata(m,n);
simdata.row(0) = arma::zeros<arma::mat>(1,n);
for (int row=1; row<m; row++) {
simdata.row(row) = simdata.row(row-1)*trans(coeff)+errors.row(row);
}
return Rcpp::wrap(simdata);
'
## create the compiled function
rcppSim <-
cxxfunction(signature(a="numeric",e="numeric"),
code,plugin="RcppArmadillo")
### END OF EXAMPLE ###
Executing this inside R, returned the following:
ERROR(s) during compilation: source code errors or compiler configuration
errors!
Program source:
1:
2: // includes from the plugin
3: #include <RcppArmadillo.h>
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 file33765791( SEXP a, SEXP e) ;
24: }
25:
26: // definition
27:
28: SEXP file33765791( SEXP a, SEXP e ){
29: BEGIN_RCPP
30:
31: arma::mat coeff = Rcpp::as<arma::mat>(a);
32: arma::mat errors = Rcpp::as<arma::mat>(e);
33: int m = errors.n_rows; int n = errors.n_cols;
34: arma::mat simdata(m,n);
35: simdata.row(0) = arma::zeros<arma::mat>(1,n);
36: for (int row=1; row<m; row++) {
37: simdata.row(row) = simdata.row(row-1)*trans(coeff)+errors.row(row);
38: }
39: return Rcpp::wrap(simdata);
40:
41: END_RCPP
42: }
43:
44:
Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created!
Executing command 'C:/PROGRA~1/R/R-214~1.0/bin/i386/R CMD SHLIB
file33765791.cpp 2> file33765791.cpp.err.txt' returned status 1
I am working under R 2.14.0 and as the pros among you might guess, I am new to
using the C++ interfaces within R. I think all I have to do is to edit some
settings on my Windows 7 machine here, but the error message is too cryptic to
me. Alas, I could also not find any thread or help topic that deals with this
online. I appreciate any direct reply or reference where I can find a solution
to this.
Please let me know in case I am leaving out some essential details here.
Many thanks,
Paul
Duncan Murdoch
2011-Dec-06 14:27 UTC
[Rd] RcppArmadillo compilation error: R CMD SHLIB returns status 1
On 05/12/2011 1:22 PM, Paul Viefers wrote:> Dear all, > > running the example by D. Eddebuettel (http://dirk.eddelbuettel.com/blog/2011/04/23/) I get an error message. Specifically, the R code I was taking from the above example is > > ### BEGIN EXAMPLE ### > > suppressMessages(require(RcppArmadillo)) > suppressMessages(require(Rcpp)) > suppressMessages(require(inline)) > code<- ' > arma::mat coeff = Rcpp::as<arma::mat>(a); > arma::mat errors = Rcpp::as<arma::mat>(e); > int m = errors.n_rows; int n = errors.n_cols; > arma::mat simdata(m,n); > simdata.row(0) = arma::zeros<arma::mat>(1,n); > for (int row=1; row<m; row++) { > simdata.row(row) = simdata.row(row-1)*trans(coeff)+errors.row(row); > } > return Rcpp::wrap(simdata); > ' > ## create the compiled function > rcppSim<- cxxfunction(signature(a="numeric",e="numeric"), > code,plugin="RcppArmadillo") > > ### END OF EXAMPLE ### > > Executing this inside R, returned the following: > > ERROR(s) during compilation: source code errors or compiler configuration errors! > > Program source: > 1: > 2: // includes from the plugin > 3: #include<RcppArmadillo.h> > 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 file33765791( SEXP a, SEXP e) ; > 24: } > 25: > 26: // definition > 27: > 28: SEXP file33765791( SEXP a, SEXP e ){ > 29: BEGIN_RCPP > 30: > 31: arma::mat coeff = Rcpp::as<arma::mat>(a); > 32: arma::mat errors = Rcpp::as<arma::mat>(e); > 33: int m = errors.n_rows; int n = errors.n_cols; > 34: arma::mat simdata(m,n); > 35: simdata.row(0) = arma::zeros<arma::mat>(1,n); > 36: for (int row=1; row<m; row++) { > 37: simdata.row(row) = simdata.row(row-1)*trans(coeff)+errors.row(row); > 38: } > 39: return Rcpp::wrap(simdata); > 40: > 41: END_RCPP > 42: } > 43: > 44: > Error in compileCode(f, code, language = language, verbose = verbose) : > Compilation ERROR, function(s)/method(s) not created! > Executing command 'C:/PROGRA~1/R/R-214~1.0/bin/i386/R CMD SHLIB file33765791.cpp 2> file33765791.cpp.err.txt' returned status 1 > > I am working under R 2.14.0 and as the pros among you might guess, I am new to using the C++ interfaces within R. I think all I have to do is to edit some settings on my Windows 7 machine here, but the error message is too cryptic to me. Alas, I could also not find any thread or help topic that deals with this online. I appreciate any direct reply or reference where I can find a solution to this. > Please let me know in case I am leaving out some essential details here.If you put the program source into a file (e.g. fn.cpp) and in a Windows cmd shell you run R CMD SHLIB fn.cpp what do you get? I would guess you've got a problem with your setup of the compiler or other tools, and this would likely show it. Duncan Murdoch