Skip to content

[Rcpp-devel] installing Rcpp on windows

2 messages · Jeffrey Pollock, Dirk Eddelbuettel

#
Hello,

I'm trying to get Rcpp to work on my machine running Windows 7 64 bit but
I'm not having much luck!

I've reinstalled R in: C:\opt\R-2.13.1
and have: C:\Rtools\MinGW64
my path variables are set as:
C:\Rtools\bin;C:\Rtools\perl\bin;C:\Rtools\MinGW64\bin;C:\opt\R-2.13.1\bin\x64;C:\Program
Files\Java\jdk1.6.0_25\bin;C:\Program
Files\TortoiseSVN\bin;%JAVA_HOME%\bin;%MAVEN_HOME%\bin

Trying some examples from the help pdf I get the following error, can anyone
help?
+ Rcpp::NumericVectorxa(a);
+ Rcpp::NumericVectorxb(b);
+ intn_xa=xa.size(),n_xb=xb.size();
+
+ Rcpp::NumericVectorxab(n_xa+n_xb-1);
+ for(inti=0;i<n_xa;i++)
+     for(intj=0;j<n_xb;j++)
+         xab[i+j]+=xa[i]*xb[j];
+ returnxab;
+ '
"Rcpp")
cygwin warning:
  MS-DOS style path detected: C:/opt/R-213~1.1/etc/x64/Makeconf
  Preferred POSIX equivalent is: /cygdrive/c/opt/R-213~1.1/etc/x64/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
file788a7664.cpp: In function 'SEXPREC* file788a7664(SEXPREC*, SEXPREC*)':
file788a7664.cpp:31:1: error: 'NumericVectorxa' is not a member of 'Rcpp'
file788a7664.cpp:32:1: error: 'NumericVectorxb' is not a member of 'Rcpp'
file788a7664.cpp:33:1: error: 'intn_xa' was not declared in this scope
file788a7664.cpp:33:9: error: 'xa' was not declared in this scope
file788a7664.cpp:33:19: error: 'n_xb' was not declared in this scope
file788a7664.cpp:33:24: error: 'xb' was not declared in this scope
file788a7664.cpp:35:1: error: 'NumericVectorxab' is not a member of 'Rcpp'
file788a7664.cpp:35:24: error: 'n_xa' was not declared in this scope
file788a7664.cpp:36:5: error: 'inti' was not declared in this scope
file788a7664.cpp:36:12: error: 'i' was not declared in this scope
file788a7664.cpp:37:6: error: 'intj' was not declared in this scope
file788a7664.cpp:37:13: error: 'j' was not declared in this scope
file788a7664.cpp:38:3: error: 'xab' was not declared in this scope
file788a7664.cpp:39:1: error: 'returnxab' was not declared in this scope
make: *** [file788a7664.o] Error 1

ERROR(s) during compilation: source code errors or compiler configuration
errors!

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 file788a7664( SEXP a, SEXP b) ;
 24: }
 25:
 26: // definition
 27:
 28: SEXP file788a7664( SEXP a, SEXP b ){
 29: BEGIN_RCPP
 30:
 31: Rcpp::NumericVectorxa(a);
 32: Rcpp::NumericVectorxb(b);
 33: intn_xa=xa.size(),n_xb=xb.size();
 34:
 35: Rcpp::NumericVectorxab(n_xa+n_xb-1);
 36: for(inti=0;i<n_xa;i++)
 37:     for(intj=0;j<n_xb;j++)
 38:         xab[i+j]+=xa[i]*xb[j];
 39: returnxab;
 40:
 41: END_RCPP
 42: }
 43:
 44:
Error in compileCode(f, code, language = language, verbose = verbose) :
  Compilation ERROR, function(s)/method(s) not created! cygwin warning:
  MS-DOS style path detected: C:/opt/R-213~1.1/etc/x64/Makeconf
  Preferred POSIX equivalent is: /cygdrive/c/opt/R-213~1.1/etc/x64/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
file788a7664.cpp: In function 'SEXPREC* file788a7664(SEXPREC*, SEXPREC*)':
file788a7664.cpp:31:1: error: 'NumericVectorxa' is not a member of 'Rcpp'
file788a7664.cpp:32:1: error: 'NumericVectorxb' is not a member of 'Rcpp'
file788a7664.cpp:33:1: error: 'intn_xa' was not declared in this scope
file788a7664.cpp:33:9: error: 'xa' was not declared in this scope
file788a7664.cpp:33:19: error: 'n_xb' was not declared in this scope
file788a7664.cpp:33:24: error: 'xb' was not declared in this scope
file788a7664.cpp:35:1: error: 'NumericVectorxab' is not a member of 'Rcpp'
fil
In addition: Warning message:
running command 'C:/opt/R-2.13.1/bin/x64/R CMD SHLIB file788a7664.cpp 2>
file788a7664.cpp.err.txt' had status 1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20110824/9ea38c9b/attachment.htm>
#
Hi Jeffrey,
On 24 August 2011 at 13:08, Jeffrey Pollock wrote:
| Hello,
| 
| I'm trying to get Rcpp to work on my machine running Windows 7 64 bit but I'm
| not having much luck!
| 
| I've reinstalled R in: C:\opt\R-2.13.1
| and have: C:\Rtools\MinGW64
| my path variables are set as: C:\Rtools\bin;C:\Rtools\perl\bin;C:\Rtools\
| MinGW64\bin;C:\opt\R-2.13.1\bin\x64;C:\Program Files\Java\jdk1.6.0_25\bin;C:\
| Program Files\TortoiseSVN\bin;%JAVA_HOME%\bin;%MAVEN_HOME%\bin
| 
| Trying some examples from the help pdf I get the following error, can anyone
| help?
| 
| > library(inline)
| > library(Rcpp)
| > src <- '
| + Rcpp::NumericVectorxa(a);
| + Rcpp::NumericVectorxb(b);

You are lacking critical spaces:

  Rcpp::NumericVector xa(a);
  Rcpp::NumericVector xb(b);

Rcpp::NumericVector is the type, xa is the variable of that type and a is the
SEXP used to init it.

| + intn_xa=xa.size(),n_xb=xb.size();
| +
| + Rcpp::NumericVectorxab(n_xa+n_xb-1);
| + for(inti=0;i<n_xa;i++)
| + ??? for(intj=0;j<n_xb;j++)
| + ??? ??? xab[i+j]+=xa[i]*xb[j];
| + returnxab;
| + '
| > fun <- cxxfunction(signature(a = "numeric", b = "numeric"), src, plugin =
| "Rcpp")
| cygwin warning:
| ? MS-DOS style path detected: C:/opt/R-213~1.1/etc/x64/Makeconf
| ? Preferred POSIX equivalent is: /cygdrive/c/opt/R-213~1.1/etc/x64/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
| file788a7664.cpp: In function 'SEXPREC* file788a7664(SEXPREC*, SEXPREC*)':
| file788a7664.cpp:31:1: error: 'NumericVectorxa' is not a member of 'Rcpp'
| file788a7664.cpp:32:1: error: 'NumericVectorxb' is not a member of 'Rcpp'

The error was quite clear: unknown type.

Maybe trying the examples in the examples/ directory is easier as you may
avoid copy and paste errors?

Dirk

| file788a7664.cpp:33:1: error: 'intn_xa' was not declared in this scope
| file788a7664.cpp:33:9: error: 'xa' was not declared in this scope
| file788a7664.cpp:33:19: error: 'n_xb' was not declared in this scope
| file788a7664.cpp:33:24: error: 'xb' was not declared in this scope
| file788a7664.cpp:35:1: error: 'NumericVectorxab' is not a member of 'Rcpp'
| file788a7664.cpp:35:24: error: 'n_xa' was not declared in this scope
| file788a7664.cpp:36:5: error: 'inti' was not declared in this scope
| file788a7664.cpp:36:12: error: 'i' was not declared in this scope
| file788a7664.cpp:37:6: error: 'intj' was not declared in this scope
| file788a7664.cpp:37:13: error: 'j' was not declared in this scope
| file788a7664.cpp:38:3: error: 'xab' was not declared in this scope
| file788a7664.cpp:39:1: error: 'returnxab' was not declared in this scope
| make: *** [file788a7664.o] Error 1
| 
| ERROR(s) during compilation: source code errors or compiler configuration
| errors!
| 
| 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 file788a7664( SEXP a, SEXP b) ;
| ?24: }
| ?25:
| ?26: // definition
| ?27:
| ?28: SEXP file788a7664( SEXP a, SEXP b ){
| ?29: BEGIN_RCPP
| ?30:
| ?31: Rcpp::NumericVectorxa(a);
| ?32: Rcpp::NumericVectorxb(b);
| ?33: intn_xa=xa.size(),n_xb=xb.size();
| ?34:
| ?35: Rcpp::NumericVectorxab(n_xa+n_xb-1);
| ?36: for(inti=0;i<n_xa;i++)
| ?37: ??? for(intj=0;j<n_xb;j++)
| ?38: ??? ??? xab[i+j]+=xa[i]*xb[j];
| ?39: returnxab;
| ?40:
| ?41: END_RCPP
| ?42: }
| ?43:
| ?44:
| Error in compileCode(f, code, language = language, verbose = verbose) :
| ? Compilation ERROR, function(s)/method(s) not created! cygwin warning:
| ? MS-DOS style path detected: C:/opt/R-213~1.1/etc/x64/Makeconf
| ? Preferred POSIX equivalent is: /cygdrive/c/opt/R-213~1.1/etc/x64/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
| file788a7664.cpp: In function 'SEXPREC* file788a7664(SEXPREC*, SEXPREC*)':
| file788a7664.cpp:31:1: error: 'NumericVectorxa' is not a member of 'Rcpp'
| file788a7664.cpp:32:1: error: 'NumericVectorxb' is not a member of 'Rcpp'
| file788a7664.cpp:33:1: error: 'intn_xa' was not declared in this scope
| file788a7664.cpp:33:9: error: 'xa' was not declared in this scope
| file788a7664.cpp:33:19: error: 'n_xb' was not declared in this scope
| file788a7664.cpp:33:24: error: 'xb' was not declared in this scope
| file788a7664.cpp:35:1: error: 'NumericVectorxab' is not a member of 'Rcpp'
| fil
| In addition: Warning message:
| running command 'C:/opt/R-2.13.1/bin/x64/R CMD SHLIB file788a7664.cpp 2>
| file788a7664.cpp.err.txt' had status 1
| 
| ----------------------------------------------------------------------
| _______________________________________________
| 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